mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	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
This commit is contained in:
		@@ -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()
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										15
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								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
 | 
						// 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
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user