]> source.dussan.org Git - gitea.git/commitdiff
Add work path CLI option (#6922)
authorzeripath <art27@cantab.net>
Tue, 14 May 2019 15:20:35 +0000 (16:20 +0100)
committertechknowlogick <techknowlogick@gitea.io>
Tue, 14 May 2019 15:20:35 +0000 (11:20 -0400)
Makes it possible to set the work path as a CLI option instead of
relying on environment variables which are somewhat opaque

contrib/pr/checkout.go
docs/content/doc/usage/command-line.en-us.md
integrations/integration_test.go
main.go
models/ssh_key_test.go
modules/setting/setting.go

index 607a503189898c9fd5cc81e2095edfd9a613f26d..7af27c2a9e6b2d11f846feab2a11d46936ce6454 100644 (file)
@@ -43,7 +43,7 @@ func runPR() {
        if err != nil {
                log.Fatal(err)
        }
-       setting.SetCustomPathAndConf("", "")
+       setting.SetCustomPathAndConf("", "", "")
        setting.NewContext()
 
        setting.RepoRootPath, err = ioutil.TempDir(os.TempDir(), "repos")
index 9959ac30ab08ef1cefeccbb357f0528b703844c3..ab52109e93584ab085d2e1720784b4fb62cfe5c2 100644 (file)
@@ -25,8 +25,12 @@ All global options can be placed at the command level.
 
 - `--help`, `-h`: Show help text and exit. Optional.
 - `--version`, `-v`: Show version and exit. Optional. (example: `Gitea version 1.1.0+218-g7b907ed built with: bindata, sqlite`).
-- `--custom-path path`, `-C path`: Location of the Gitea custom folder. Optional. (default: $PWD/custom).
-- `--config path`, `-c path`: Gitea configuration file path. Optional. (default: custom/conf/app.ini).
+- `--custom-path path`, `-C path`: Location of the Gitea custom folder. Optional. (default: `AppWorkPath`/custom or `$GITEA_CUSTOM`).
+- `--config path`, `-c path`: Gitea configuration file path. Optional. (default: `custom`/conf/app.ini).
+- `--work-path path`, `-w path`: Gitea `AppWorkPath`. Optional. (default: LOCATION_OF_GITEA_BINARY or `$GITEA_WORK_DIR`)
+
+NB: The defaults custom-path, config and work-path can also be
+changed at build time (if preferred).
 
 ### Commands
 
index 93dacaf78af21f94167dcea0d1cc7dbdf815a61b..80a42efb5c2e7291abc365b9f9b0fbc34e9a5a9a 100644 (file)
@@ -118,7 +118,7 @@ func initIntegrationTest() {
                setting.CustomConf = giteaConf
        }
 
-       setting.SetCustomPathAndConf("", "")
+       setting.SetCustomPathAndConf("", "", "")
        setting.NewContext()
        setting.CheckLFSVersion()
        models.LoadConfigs()
diff --git a/main.go b/main.go
index 102450f90602c90d9ff967d86d85df1a8c67ea28..4d94d00aba496494059d159922744050eab89e24 100644 (file)
--- a/main.go
+++ b/main.go
@@ -68,7 +68,7 @@ arguments - which can alternatively be run by running the subcommand web.`
        // Now adjust these commands to add our global configuration options
 
        // First calculate the default paths and set the AppHelpTemplates in this context
-       setting.SetCustomPathAndConf("", "")
+       setting.SetCustomPathAndConf("", "", "")
        setAppHelpTemplates()
 
        // default configuration flags
@@ -84,6 +84,11 @@ arguments - which can alternatively be run by running the subcommand web.`
                        Usage: "Custom configuration file path",
                },
                cli.VersionFlag,
+               cli.StringFlag{
+                       Name:  "work-path, w",
+                       Value: setting.AppWorkPath,
+                       Usage: "Set the gitea working path",
+               },
        }
 
        // Set the default to be equivalent to cmdWeb and add the default flags
@@ -114,10 +119,11 @@ func setFlagsAndBeforeOnSubcommands(command *cli.Command, defaultFlags []cli.Fla
 func establishCustomPath(ctx *cli.Context) error {
        var providedCustom string
        var providedConf string
+       var providedWorkPath string
 
        currentCtx := ctx
        for {
-               if len(providedCustom) != 0 && len(providedConf) != 0 {
+               if len(providedCustom) != 0 && len(providedConf) != 0 && len(providedWorkPath) != 0 {
                        break
                }
                if currentCtx == nil {
@@ -129,10 +135,13 @@ func establishCustomPath(ctx *cli.Context) error {
                if currentCtx.IsSet("config") && len(providedConf) == 0 {
                        providedConf = currentCtx.String("config")
                }
+               if currentCtx.IsSet("work-path") && len(providedWorkPath) == 0 {
+                       providedWorkPath = currentCtx.String("work-path")
+               }
                currentCtx = currentCtx.Parent()
 
        }
-       setting.SetCustomPathAndConf(providedCustom, providedConf)
+       setting.SetCustomPathAndConf(providedCustom, providedConf, providedWorkPath)
 
        setAppHelpTemplates()
 
index f310935a32b6e0f7afaa97e4fadef20fbe86ab54..82f5f9724bcdb44ae3322aed4f46f6a37f222d19 100644 (file)
@@ -14,7 +14,7 @@ import (
 )
 
 func init() {
-       setting.SetCustomPathAndConf("", "")
+       setting.SetCustomPathAndConf("", "", "")
        setting.NewContext()
 }
 
index d7f361c01e88fcf1dbca93c5d95181545bb6580f..461e394a6265beda4189151c7df4165a996816a7 100644 (file)
@@ -479,7 +479,10 @@ func CheckLFSVersion() {
 // SetCustomPathAndConf will set CustomPath and CustomConf with reference to the
 // GITEA_CUSTOM environment variable and with provided overrides before stepping
 // back to the default
-func SetCustomPathAndConf(providedCustom, providedConf string) {
+func SetCustomPathAndConf(providedCustom, providedConf, providedWorkPath string) {
+       if len(providedWorkPath) != 0 {
+               AppWorkPath = filepath.ToSlash(providedWorkPath)
+       }
        if giteaCustom, ok := os.LookupEnv("GITEA_CUSTOM"); ok {
                CustomPath = giteaCustom
        }