Browse Source

Add work path CLI option (#6922)

Makes it possible to set the work path as a CLI option instead of
relying on environment variables which are somewhat opaque
zeripath 5 months ago
parent
commit
e55c874dd2

+ 1 - 1
contrib/pr/checkout.go

@@ -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")

+ 6 - 2
docs/content/doc/usage/command-line.en-us.md

@@ -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
 

+ 1 - 1
integrations/integration_test.go

@@ -118,7 +118,7 @@ func initIntegrationTest() {
 		setting.CustomConf = giteaConf
 	}
 
-	setting.SetCustomPathAndConf("", "")
+	setting.SetCustomPathAndConf("", "", "")
 	setting.NewContext()
 	setting.CheckLFSVersion()
 	models.LoadConfigs()

+ 12 - 3
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()
 

+ 1 - 1
models/ssh_key_test.go

@@ -14,7 +14,7 @@ import (
 )
 
 func init() {
-	setting.SetCustomPathAndConf("", "")
+	setting.SetCustomPathAndConf("", "", "")
 	setting.NewContext()
 }
 

+ 4 - 1
modules/setting/setting.go

@@ -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
 	}