[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 commitc52459b088
) (cherry picked from commit92cac277b2
) (cherry picked from commit2c744f1118
) (cherry picked from commit989a98a8c5
) (cherry picked from commit9cf7052bd4
) (cherry picked from commita13c9667e0
) Conflicts: main.go https://codeberg.org/forgejo/forgejo/pulls/1216 (cherry picked from commita9c3cf060d
) (cherry picked from commiteb6d904b23
) (cherry picked from commitfd4878e487
) (cherry picked from commitcc2cab9241
) (cherry picked from commitbe523c63db
) (cherry picked from commit254d1a2f9a
) (cherry picked from commit1eecf4200e
) (cherry picked from commita01f5c3475
) (cherry picked from commitb1ba7ce321
) (cherry picked from commiteddfd96beb
) (cherry picked from commitc9c9b7e49b
) (cherry picked from commitad7e871779
) (cherry picked from commit9073ed215b
) (cherry picked from commita827fdadd3
) (cherry picked from commit39e66246cd
) (cherry picked from commit46d1c778a2
) (cherry picked from commita65bc0b75d
) (cherry picked from commit5f901e9671
) Conflicts: cmd/main.go https://codeberg.org/forgejo/forgejo/pulls/1976 (cherry picked from commita0e017d206
) (cherry picked from commite6e24b9631
) (cherry picked from commit00667d869b
) (cherry picked from commita9c5bc38e9
) (cherry picked from commit671ef86e6d
) (cherry picked from commit5063fd6b84
) (cherry picked from commit5c043c2aef
)
This commit is contained in:
parent
ef25d18d9c
commit
ec3851d5a7
4 changed files with 122 additions and 5 deletions
|
@ -147,10 +147,10 @@ func NewMainApp(version, versionExtra string) *cli.App {
|
||||||
|
|
||||||
func innerNewMainApp(version, versionExtra string, subCmdsStandaloneArgs, subCmdWithConfigArgs []*cli.Command) *cli.App {
|
func innerNewMainApp(version, versionExtra string, subCmdsStandaloneArgs, subCmdWithConfigArgs []*cli.Command) *cli.App {
|
||||||
app := cli.NewApp()
|
app := cli.NewApp()
|
||||||
app.Name = "Gitea"
|
app.HelpName = "forgejo"
|
||||||
app.HelpName = "gitea"
|
app.Name = "Forgejo"
|
||||||
app.Usage = "A painless self-hosted Git service"
|
app.Usage = "Beyond coding. We forge."
|
||||||
app.Description = `Gitea program contains "web" and other subcommands. If no subcommand is given, it starts the web server by default. Use "web" subcommand for more web server arguments, use other subcommands for other purposes.`
|
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 + versionExtra
|
app.Version = version + versionExtra
|
||||||
app.EnableBashCompletion = true
|
app.EnableBashCompletion = true
|
||||||
|
|
||||||
|
|
9
main.go
9
main.go
|
@ -40,7 +40,16 @@ func init() {
|
||||||
setting.AppStartTime = time.Now().UTC()
|
setting.AppStartTime = time.Now().UTC()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func forgejoEnv() {
|
||||||
|
for _, k := range []string{"CUSTOM", "WORK_DIR"} {
|
||||||
|
if v, ok := os.LookupEnv("FORGEJO_" + k); ok {
|
||||||
|
os.Setenv("GITEA_"+k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
forgejoEnv()
|
||||||
cli.OsExiter = func(code int) {
|
cli.OsExiter = func(code int) {
|
||||||
log.GetManager().Close()
|
log.GetManager().Close()
|
||||||
os.Exit(code)
|
os.Exit(code)
|
||||||
|
|
|
@ -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")
|
envCustomPath := getEnvFn("GITEA_CUSTOM")
|
||||||
if envCustomPath != "" {
|
if envCustomPath != "" {
|
||||||
tmpCustomPath.Set(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")
|
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() {
|
readFromArgs := func() {
|
||||||
|
@ -180,7 +196,7 @@ func InitWorkPathAndCfgProvider(getEnvFn func(name string) string, args ArgWorkP
|
||||||
log.Fatal("WORK_PATH in %q must be absolute path", configWorkPath)
|
log.Fatal("WORK_PATH in %q must be absolute path", configWorkPath)
|
||||||
}
|
}
|
||||||
configWorkPath = filepath.Clean(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)
|
fi1, err1 := os.Stat(tmpWorkPath.Value)
|
||||||
fi2, err2 := os.Stat(configWorkPath)
|
fi2, err2 := os.Stat(configWorkPath)
|
||||||
if err1 != nil || err2 != nil || !os.SameFile(fi1, fi2) {
|
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)
|
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) {
|
t.Run("CustomPath(env)", func(t *testing.T) {
|
||||||
testInit(dirFoo, "", "")
|
testInit(dirFoo, "", "")
|
||||||
InitWorkPathAndCommonConfig(envVars{"GITEA_CUSTOM": fp(dirBar, "custom1")}.Getenv, ArgWorkPathAndCustomConf{})
|
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)
|
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) {
|
t.Run("CustomConf", func(t *testing.T) {
|
||||||
testInit(dirFoo, "", "")
|
testInit(dirFoo, "", "")
|
||||||
InitWorkPathAndCommonConfig(envVars{}.Getenv, ArgWorkPathAndCustomConf{CustomConf: "app1.ini"})
|
InitWorkPathAndCommonConfig(envVars{}.Getenv, ArgWorkPathAndCustomConf{CustomConf: "app1.ini"})
|
||||||
|
@ -115,6 +147,32 @@ func TestInitWorkPathAndCommonConfig(t *testing.T) {
|
||||||
assert.True(t, AppWorkPathMismatch)
|
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) {
|
t.Run("Builtin", func(t *testing.T) {
|
||||||
testInit(dirFoo, dirBar, dirXxx)
|
testInit(dirFoo, dirBar, dirXxx)
|
||||||
InitWorkPathAndCommonConfig(envVars{}.Getenv, ArgWorkPathAndCustomConf{})
|
InitWorkPathAndCommonConfig(envVars{}.Getenv, ArgWorkPathAndCustomConf{})
|
||||||
|
@ -148,4 +206,38 @@ func TestInitWorkPathAndCommonConfig(t *testing.T) {
|
||||||
assert.Equal(t, fp(dirXxx, "custom1"), CustomPath)
|
assert.Equal(t, fp(dirXxx, "custom1"), CustomPath)
|
||||||
assert.Equal(t, iniWorkPath, CustomConf)
|
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…
Reference in a new issue