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:
		
							parent
							
								
									488d34691a
								
							
						
					
					
						commit
						e55c874dd2
					
				
					 6 changed files with 25 additions and 9 deletions
				
			
		|  | @ -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 | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue