mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-26 12:01:08 +00:00 
			
		
		
		
	[BRANDING] alias {FORGEJO,GITEA}_{CUSTOM,WORK_DIR}
FORGEJO_* environment variables are set to the corresponding GITEA_* variable when the cli starts. This approach is intended to minimize the conflicts on rebase. All occurences of GITEA_* are left untouched in the codebase and they are only changed to FORGEJO_* if exposed to the user. (cherry picked from commite466f9d10e) (cherry picked from commite33e95931b) (cherry picked from commit2cfc6519b7) (cherry picked from commitaf8864373a) (cherry picked from commita0550ff339) (cherry picked from commit24dc0a5191) (cherry picked from commite255eea2b4) (cherry picked from commit0c4f5afa7a) (cherry picked from commit42fce708d0) (cherry picked from commite7278c3c22) (cherry picked from commit0fb9ed7e0e) (cherry picked from commita98308aa4d) (cherry picked from commitb8695fcbe0) (cherry picked from commit4aee8719f5) (cherry picked from commit1c503c1ba7) (cherry picked from commitcf1ed8551e) (cherry picked from commit3a47ddd289)
This commit is contained in:
		
					parent
					
						
							
								e3877892e1
							
						
					
				
			
			
				commit
				
					
						f5d6dde5f2
					
				
			
		
					 3 changed files with 122 additions and 4 deletions
				
			
		
							
								
								
									
										16
									
								
								main.go
									
										
									
									
									
								
							
							
						
						
									
										16
									
								
								main.go
									
										
									
									
									
								
							|  | @ -80,11 +80,21 @@ DEFAULT CONFIGURATION: | |||
| 	}, | ||||
| } | ||||
| 
 | ||||
| func forgejoEnv() { | ||||
| 	for _, k := range []string{"CUSTOM", "WORK_DIR"} { | ||||
| 		if v, ok := os.LookupEnv("FORGEJO_" + k); ok { | ||||
| 			os.Setenv("GITEA_"+k, v) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func main() { | ||||
| 	forgejoEnv() | ||||
| 	app := cli.NewApp() | ||||
| 	app.Name = "Gitea" | ||||
| 	app.Usage = "A painless self-hosted Git service" | ||||
| 	app.Description = `By default, Gitea will start serving using the web-server with no argument, which can alternatively be run by running the subcommand "web".` | ||||
| 	app.Name = "Forgejo" | ||||
| 	app.Usage = "Beyond coding. We forge." | ||||
| 	app.Description = `By default, forgejo will start serving using the web-server with no | ||||
| argument - which can alternatively be run by running the subcommand web.` | ||||
| 	app.Version = Version + formatBuiltWith() | ||||
| 	app.EnableBashCompletion = true | ||||
| 
 | ||||
|  |  | |||
|  | @ -129,6 +129,14 @@ func InitWorkPathAndCfgProvider(getEnvFn func(name string) string, args ArgWorkP | |||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		envWorkPath = getEnvFn("FORGEJO_WORK_DIR") | ||||
| 		if envWorkPath != "" { | ||||
| 			tmpWorkPath.Set(envWorkPath) | ||||
| 			if !filepath.IsAbs(tmpWorkPath.Value) { | ||||
| 				log.Fatal("FORGEJO_WORK_DIR (work path) must be absolute path") | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		envCustomPath := getEnvFn("GITEA_CUSTOM") | ||||
| 		if envCustomPath != "" { | ||||
| 			tmpCustomPath.Set(envCustomPath) | ||||
|  | @ -136,6 +144,14 @@ func InitWorkPathAndCfgProvider(getEnvFn func(name string) string, args ArgWorkP | |||
| 				log.Fatal("GITEA_CUSTOM (custom path) must be absolute path") | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		envCustomPath = getEnvFn("FORGEJO_CUSTOM") | ||||
| 		if envCustomPath != "" { | ||||
| 			tmpCustomPath.Set(envCustomPath) | ||||
| 			if !filepath.IsAbs(tmpCustomPath.Value) { | ||||
| 				log.Fatal("FORGEJO_CUSTOM (custom path) must be absolute path") | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	readFromArgs := func() { | ||||
|  | @ -177,7 +193,7 @@ func InitWorkPathAndCfgProvider(getEnvFn func(name string) string, args ArgWorkP | |||
| 			log.Fatal("WORK_PATH in %q must be absolute path", configWorkPath) | ||||
| 		} | ||||
| 		configWorkPath = filepath.Clean(configWorkPath) | ||||
| 		if tmpWorkPath.Value != "" && (getEnvFn("GITEA_WORK_DIR") != "" || args.WorkPath != "") { | ||||
| 		if tmpWorkPath.Value != "" && (getEnvFn("GITEA_WORK_DIR") != "" || getEnvFn("FORGEJO_WORK_DIR") != "" || args.WorkPath != "") { | ||||
| 			fi1, err1 := os.Stat(tmpWorkPath.Value) | ||||
| 			fi2, err2 := os.Stat(configWorkPath) | ||||
| 			if err1 != nil || err2 != nil || !os.SameFile(fi1, fi2) { | ||||
|  |  | |||
|  | @ -60,6 +60,22 @@ func TestInitWorkPathAndCommonConfig(t *testing.T) { | |||
| 		assert.Equal(t, fp(dirXxx, "custom/conf/app.ini"), CustomConf) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("WorkDir(env)", func(t *testing.T) { | ||||
| 		testInit(dirFoo, "", "") | ||||
| 		InitWorkPathAndCommonConfig(envVars{"FORGEJO_WORK_DIR": dirBar}.Getenv, ArgWorkPathAndCustomConf{}) | ||||
| 		assert.Equal(t, dirBar, AppWorkPath) | ||||
| 		assert.Equal(t, fp(dirBar, "custom"), CustomPath) | ||||
| 		assert.Equal(t, fp(dirBar, "custom/conf/app.ini"), CustomConf) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("WorkDir(env,arg)", func(t *testing.T) { | ||||
| 		testInit(dirFoo, "", "") | ||||
| 		InitWorkPathAndCommonConfig(envVars{"FORGEJO_WORK_DIR": dirBar}.Getenv, ArgWorkPathAndCustomConf{WorkPath: dirXxx}) | ||||
| 		assert.Equal(t, dirXxx, AppWorkPath) | ||||
| 		assert.Equal(t, fp(dirXxx, "custom"), CustomPath) | ||||
| 		assert.Equal(t, fp(dirXxx, "custom/conf/app.ini"), CustomConf) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("CustomPath(env)", func(t *testing.T) { | ||||
| 		testInit(dirFoo, "", "") | ||||
| 		InitWorkPathAndCommonConfig(envVars{"GITEA_CUSTOM": fp(dirBar, "custom1")}.Getenv, ArgWorkPathAndCustomConf{}) | ||||
|  | @ -76,6 +92,22 @@ func TestInitWorkPathAndCommonConfig(t *testing.T) { | |||
| 		assert.Equal(t, fp(dirFoo, "custom2/conf/app.ini"), CustomConf) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("CustomPath(env)", func(t *testing.T) { | ||||
| 		testInit(dirFoo, "", "") | ||||
| 		InitWorkPathAndCommonConfig(envVars{"FORGEJO_CUSTOM": fp(dirBar, "custom1")}.Getenv, ArgWorkPathAndCustomConf{}) | ||||
| 		assert.Equal(t, dirFoo, AppWorkPath) | ||||
| 		assert.Equal(t, fp(dirBar, "custom1"), CustomPath) | ||||
| 		assert.Equal(t, fp(dirBar, "custom1/conf/app.ini"), CustomConf) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("CustomPath(env,arg)", func(t *testing.T) { | ||||
| 		testInit(dirFoo, "", "") | ||||
| 		InitWorkPathAndCommonConfig(envVars{"FORGEJO_CUSTOM": fp(dirBar, "custom1")}.Getenv, ArgWorkPathAndCustomConf{CustomPath: "custom2"}) | ||||
| 		assert.Equal(t, dirFoo, AppWorkPath) | ||||
| 		assert.Equal(t, fp(dirFoo, "custom2"), CustomPath) | ||||
| 		assert.Equal(t, fp(dirFoo, "custom2/conf/app.ini"), CustomConf) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("CustomConf", func(t *testing.T) { | ||||
| 		testInit(dirFoo, "", "") | ||||
| 		InitWorkPathAndCommonConfig(envVars{}.Getenv, ArgWorkPathAndCustomConf{CustomConf: "app1.ini"}) | ||||
|  | @ -115,6 +147,32 @@ func TestInitWorkPathAndCommonConfig(t *testing.T) { | |||
| 		assert.True(t, AppWorkPathMismatch) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("CustomConfOverrideWorkPath", func(t *testing.T) { | ||||
| 		iniWorkPath := fp(tmpDir, "app-workpath.ini") | ||||
| 		_ = os.WriteFile(iniWorkPath, []byte("WORK_PATH="+dirXxx), 0o644) | ||||
| 
 | ||||
| 		testInit(dirFoo, "", "") | ||||
| 		InitWorkPathAndCommonConfig(envVars{}.Getenv, ArgWorkPathAndCustomConf{CustomConf: iniWorkPath}) | ||||
| 		assert.Equal(t, dirXxx, AppWorkPath) | ||||
| 		assert.Equal(t, fp(dirXxx, "custom"), CustomPath) | ||||
| 		assert.Equal(t, iniWorkPath, CustomConf) | ||||
| 		assert.False(t, AppWorkPathMismatch) | ||||
| 
 | ||||
| 		testInit(dirFoo, "", "") | ||||
| 		InitWorkPathAndCommonConfig(envVars{"FORGEJO_WORK_DIR": dirBar}.Getenv, ArgWorkPathAndCustomConf{CustomConf: iniWorkPath}) | ||||
| 		assert.Equal(t, dirXxx, AppWorkPath) | ||||
| 		assert.Equal(t, fp(dirXxx, "custom"), CustomPath) | ||||
| 		assert.Equal(t, iniWorkPath, CustomConf) | ||||
| 		assert.True(t, AppWorkPathMismatch) | ||||
| 
 | ||||
| 		testInit(dirFoo, "", "") | ||||
| 		InitWorkPathAndCommonConfig(envVars{}.Getenv, ArgWorkPathAndCustomConf{WorkPath: dirBar, CustomConf: iniWorkPath}) | ||||
| 		assert.Equal(t, dirXxx, AppWorkPath) | ||||
| 		assert.Equal(t, fp(dirXxx, "custom"), CustomPath) | ||||
| 		assert.Equal(t, iniWorkPath, CustomConf) | ||||
| 		assert.True(t, AppWorkPathMismatch) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("Builtin", func(t *testing.T) { | ||||
| 		testInit(dirFoo, dirBar, dirXxx) | ||||
| 		InitWorkPathAndCommonConfig(envVars{}.Getenv, ArgWorkPathAndCustomConf{}) | ||||
|  | @ -148,4 +206,38 @@ func TestInitWorkPathAndCommonConfig(t *testing.T) { | |||
| 		assert.Equal(t, fp(dirXxx, "custom1"), CustomPath) | ||||
| 		assert.Equal(t, iniWorkPath, CustomConf) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("Builtin", func(t *testing.T) { | ||||
| 		testInit(dirFoo, dirBar, dirXxx) | ||||
| 		InitWorkPathAndCommonConfig(envVars{}.Getenv, ArgWorkPathAndCustomConf{}) | ||||
| 		assert.Equal(t, dirFoo, AppWorkPath) | ||||
| 		assert.Equal(t, dirBar, CustomPath) | ||||
| 		assert.Equal(t, dirXxx, CustomConf) | ||||
| 
 | ||||
| 		testInit(dirFoo, "custom1", "cfg.ini") | ||||
| 		InitWorkPathAndCommonConfig(envVars{}.Getenv, ArgWorkPathAndCustomConf{}) | ||||
| 		assert.Equal(t, dirFoo, AppWorkPath) | ||||
| 		assert.Equal(t, fp(dirFoo, "custom1"), CustomPath) | ||||
| 		assert.Equal(t, fp(dirFoo, "custom1/cfg.ini"), CustomConf) | ||||
| 
 | ||||
| 		testInit(dirFoo, "custom1", "cfg.ini") | ||||
| 		InitWorkPathAndCommonConfig(envVars{"FORGEJO_WORK_DIR": dirYyy}.Getenv, ArgWorkPathAndCustomConf{}) | ||||
| 		assert.Equal(t, dirYyy, AppWorkPath) | ||||
| 		assert.Equal(t, fp(dirYyy, "custom1"), CustomPath) | ||||
| 		assert.Equal(t, fp(dirYyy, "custom1/cfg.ini"), CustomConf) | ||||
| 
 | ||||
| 		testInit(dirFoo, "custom1", "cfg.ini") | ||||
| 		InitWorkPathAndCommonConfig(envVars{"FORGEJO_CUSTOM": dirYyy}.Getenv, ArgWorkPathAndCustomConf{}) | ||||
| 		assert.Equal(t, dirFoo, AppWorkPath) | ||||
| 		assert.Equal(t, dirYyy, CustomPath) | ||||
| 		assert.Equal(t, fp(dirYyy, "cfg.ini"), CustomConf) | ||||
| 
 | ||||
| 		iniWorkPath := fp(tmpDir, "app-workpath.ini") | ||||
| 		_ = os.WriteFile(iniWorkPath, []byte("WORK_PATH="+dirXxx), 0o644) | ||||
| 		testInit(dirFoo, "custom1", "cfg.ini") | ||||
| 		InitWorkPathAndCommonConfig(envVars{}.Getenv, ArgWorkPathAndCustomConf{CustomConf: iniWorkPath}) | ||||
| 		assert.Equal(t, dirXxx, AppWorkPath) | ||||
| 		assert.Equal(t, fp(dirXxx, "custom1"), CustomPath) | ||||
| 		assert.Equal(t, iniWorkPath, CustomConf) | ||||
| 	}) | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue