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
tokarchuk/v1.17
zeripath 6 years ago committed by techknowlogick
parent 488d34691a
commit e55c874dd2
  1. 2
      contrib/pr/checkout.go
  2. 8
      docs/content/doc/usage/command-line.en-us.md
  3. 2
      integrations/integration_test.go
  4. 15
      main.go
  5. 2
      models/ssh_key_test.go
  6. 5
      modules/setting/setting.go

@ -43,7 +43,7 @@ func runPR() {
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
setting.SetCustomPathAndConf("", "") setting.SetCustomPathAndConf("", "", "")
setting.NewContext() setting.NewContext()
setting.RepoRootPath, err = ioutil.TempDir(os.TempDir(), "repos") setting.RepoRootPath, err = ioutil.TempDir(os.TempDir(), "repos")

@ -25,8 +25,12 @@ All global options can be placed at the command level.
- `--help`, `-h`: Show help text and exit. Optional. - `--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`). - `--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). - `--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). - `--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 ### Commands

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

@ -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 // Now adjust these commands to add our global configuration options
// First calculate the default paths and set the AppHelpTemplates in this context // First calculate the default paths and set the AppHelpTemplates in this context
setting.SetCustomPathAndConf("", "") setting.SetCustomPathAndConf("", "", "")
setAppHelpTemplates() setAppHelpTemplates()
// default configuration flags // default configuration flags
@ -84,6 +84,11 @@ arguments - which can alternatively be run by running the subcommand web.`
Usage: "Custom configuration file path", Usage: "Custom configuration file path",
}, },
cli.VersionFlag, 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 // 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 { func establishCustomPath(ctx *cli.Context) error {
var providedCustom string var providedCustom string
var providedConf string var providedConf string
var providedWorkPath string
currentCtx := ctx currentCtx := ctx
for { for {
if len(providedCustom) != 0 && len(providedConf) != 0 { if len(providedCustom) != 0 && len(providedConf) != 0 && len(providedWorkPath) != 0 {
break break
} }
if currentCtx == nil { if currentCtx == nil {
@ -129,10 +135,13 @@ func establishCustomPath(ctx *cli.Context) error {
if currentCtx.IsSet("config") && len(providedConf) == 0 { if currentCtx.IsSet("config") && len(providedConf) == 0 {
providedConf = currentCtx.String("config") providedConf = currentCtx.String("config")
} }
if currentCtx.IsSet("work-path") && len(providedWorkPath) == 0 {
providedWorkPath = currentCtx.String("work-path")
}
currentCtx = currentCtx.Parent() currentCtx = currentCtx.Parent()
} }
setting.SetCustomPathAndConf(providedCustom, providedConf) setting.SetCustomPathAndConf(providedCustom, providedConf, providedWorkPath)
setAppHelpTemplates() setAppHelpTemplates()

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

@ -479,7 +479,10 @@ func CheckLFSVersion() {
// SetCustomPathAndConf will set CustomPath and CustomConf with reference to the // SetCustomPathAndConf will set CustomPath and CustomConf with reference to the
// GITEA_CUSTOM environment variable and with provided overrides before stepping // GITEA_CUSTOM environment variable and with provided overrides before stepping
// back to the default // 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 { if giteaCustom, ok := os.LookupEnv("GITEA_CUSTOM"); ok {
CustomPath = giteaCustom CustomPath = giteaCustom
} }

Loading…
Cancel
Save