Rename gitea to forge in cli args and env variables (#339)
This PR renames `gitea` in cli args to `forge` and `GITEA` in environment variables to `FORGE` and adds the gitea names as aliases for the forge names. Also closes #311 Reviewed-on: #339
This commit is contained in:
parent eea009c7fe
commit 77a8439ea7
9 changed files with 81 additions and 51 deletions
24 cli/flags.go
24
cli/flags.go | @ -22,29 +22,31 @@ var ( | |||
| ||||
ServerFlags = append(CertStorageFlags, []cli.Flag{ | ||||
// ############# | ||||
// ### Gitea ### | ||||
// ### Forge ### | ||||
// ############# | ||||
// GiteaRoot specifies the root URL of the Gitea instance, without a trailing slash. | ||||
// ForgeRoot specifies the root URL of the Forge instance, without a trailing slash. | ||||
&cli.StringFlag{ | ||||
Name: "gitea-root", | ||||
Usage: "specifies the root URL of the Gitea instance, without a trailing slash.", | ||||
EnvVars: []string{"GITEA_ROOT"}, | ||||
Name: "forge-root", | ||||
Aliases: []string{"gitea-root"}, | ||||
Usage: "specifies the root URL of the Forgejo/Gitea instance, without a trailing slash.", | ||||
EnvVars: []string{"FORGE_ROOT", "GITEA_ROOT"}, | ||||
}, | ||||
// GiteaApiToken specifies an api token for the Gitea instance | ||||
// ForgeApiToken specifies an api token for the Forge instance | ||||
&cli.StringFlag{ | ||||
Name: "gitea-api-token", | ||||
Usage: "specifies an api token for the Gitea instance", | ||||
EnvVars: []string{"GITEA_API_TOKEN"}, | ||||
Name: "forge-api-token", | ||||
Aliases: []string{"gitea-api-token"}, | ||||
Usage: "specifies an api token for the Forgejo/Gitea instance", | ||||
EnvVars: []string{"FORGE_API_TOKEN", "GITEA_API_TOKEN"}, | ||||
}, | ||||
&cli.BoolFlag{ | ||||
Name: "enable-lfs-support", | ||||
Usage: "enable lfs support, require gitea >= v1.17.0 as backend", | ||||
Usage: "enable lfs support, gitea must be version v1.17.0 or higher", | ||||
EnvVars: []string{"ENABLE_LFS_SUPPORT"}, | ||||
Value: false, | ||||
}, | ||||
&cli.BoolFlag{ | ||||
Name: "enable-symlink-support", | ||||
Usage: "follow symlinks if enabled, require gitea >= v1.18.0 as backend", | ||||
Usage: "follow symlinks if enabled, gitea must be version v1.18.0 or higher", | ||||
EnvVars: []string{"ENABLE_SYMLINK_SUPPORT"}, | ||||
Value: false, | ||||
}, | ||||
| |
| @ -10,8 +10,8 @@ rawDomain = 'raw.codeberg.page' | |||
allowedCorsDomains = ['fonts.codeberg.org', 'design.codeberg.org'] | ||||
blacklistedPaths = ['do/not/use'] | ||||
| ||||
[gitea] | ||||
root = 'codeberg.org' | ||||
[forge] | ||||
root = 'https://codeberg.org' | ||||
token = 'XXXXXXXX' | ||||
lfsEnabled = true | ||||
followSymlinks = true | ||||
| |
| @ -3,7 +3,7 @@ package config | |||
type Config struct { | ||||
LogLevel string `default:"warn"` | ||||
Server ServerConfig | ||||
Gitea GiteaConfig | ||||
Forge ForgeConfig | ||||
Database DatabaseConfig | ||||
ACME ACMEConfig | ||||
} | ||||
| @ -20,7 +20,7 @@ type ServerConfig struct { | |||
BlacklistedPaths []string | ||||
} | ||||
| ||||
type GiteaConfig struct { | ||||
type ForgeConfig struct { | ||||
Root string | ||||
Token string | ||||
LFSEnabled bool `default:"false"` | ||||
| |
| @ -51,7 +51,7 @@ func MergeConfig(ctx *cli.Context, config *Config) { | |||
} | ||||
| ||||
mergeServerConfig(ctx, &config.Server) | ||||
mergeGiteaConfig(ctx, &config.Gitea) | ||||
mergeForgeConfig(ctx, &config.Forge) | ||||
mergeDatabaseConfig(ctx, &config.Database) | ||||
mergeACMEConfig(ctx, &config.ACME) | ||||
} | ||||
| @ -89,12 +89,12 @@ func mergeServerConfig(ctx *cli.Context, config *ServerConfig) { | |||
config.BlacklistedPaths = append(config.BlacklistedPaths, ALWAYS_BLACKLISTED_PATHS...) | ||||
} | ||||
| ||||
func mergeGiteaConfig(ctx *cli.Context, config *GiteaConfig) { | ||||
if ctx.IsSet("gitea-root") { | ||||
config.Root = ctx.String("gitea-root") | ||||
func mergeForgeConfig(ctx *cli.Context, config *ForgeConfig) { | ||||
if ctx.IsSet("forge-root") { | ||||
config.Root = ctx.String("forge-root") | ||||
} | ||||
if ctx.IsSet("gitea-api-token") { | ||||
config.Token = ctx.String("gitea-api-token") | ||||
if ctx.IsSet("forge-api-token") { | ||||
config.Token = ctx.String("forge-api-token") | ||||
} | ||||
if ctx.IsSet("enable-lfs-support") { | ||||
config.LFSEnabled = ctx.Bool("enable-lfs-support") | ||||
| |
| @ -110,7 +110,7 @@ func TestValuesReadFromConfigFileShouldBeOverwrittenByArgs(t *testing.T) { | |||
} | ||||
| ||||
expectedConfig.LogLevel = "debug" | ||||
expectedConfig.Gitea.Root = "not-codeberg.org" | ||||
expectedConfig.Forge.Root = "not-codeberg.org" | ||||
expectedConfig.ACME.AcceptTerms = true | ||||
expectedConfig.Server.Host = "172.17.0.2" | ||||
expectedConfig.Server.BlacklistedPaths = append(expectedConfig.Server.BlacklistedPaths, ALWAYS_BLACKLISTED_PATHS...) | ||||
| @ -122,7 +122,7 @@ func TestValuesReadFromConfigFileShouldBeOverwrittenByArgs(t *testing.T) { | |||
[]string{ | ||||
"--config-file", "assets/test_config.toml", | ||||
"--log-level", "debug", | ||||
"--gitea-root", "not-codeberg.org", | ||||
"--forge-root", "not-codeberg.org", | ||||
"--acme-accept-terms", | ||||
"--host", "172.17.0.2", | ||||
}, | ||||
| @ -146,7 +146,7 @@ func TestMergeConfigShouldReplaceAllExistingValuesGivenAllArgsExist(t *testing.T | |||
AllowedCorsDomains: []string{"original"}, | ||||
BlacklistedPaths: []string{"original"}, | ||||
}, | ||||
Gitea: GiteaConfig{ | ||||
Forge: ForgeConfig{ | ||||
Root: "original", | ||||
Token: "original", | ||||
LFSEnabled: false, | ||||
| @ -186,7 +186,7 @@ func TestMergeConfigShouldReplaceAllExistingValuesGivenAllArgsExist(t *testing.T | |||
AllowedCorsDomains: []string{"changed"}, | ||||
BlacklistedPaths: append([]string{"changed"}, ALWAYS_BLACKLISTED_PATHS...), | ||||
}, | ||||
Gitea: GiteaConfig{ | ||||
Forge: ForgeConfig{ | ||||
Root: "changed", | ||||
Token: "changed", | ||||
LFSEnabled: true, | ||||
| @ -227,9 +227,9 @@ func TestMergeConfigShouldReplaceAllExistingValuesGivenAllArgsExist(t *testing.T | |||
"--port", "8443", | ||||
"--http-port", "443", | ||||
"--enable-http-server", | ||||
// Gitea | ||||
"--gitea-root", "changed", | ||||
"--gitea-api-token", "changed", | ||||
// Forge | ||||
"--forge-root", "changed", | ||||
"--forge-api-token", "changed", | ||||
"--enable-lfs-support", | ||||
"--enable-symlink-support", | ||||
"--default-mime-type", "changed", | ||||
| @ -366,11 +366,11 @@ func TestMergeServerConfigShouldReplaceOnlyOneValueExistingValueGivenOnlyOneArgE | |||
} | ||||
} | ||||
| ||||
func TestMergeGiteaConfigShouldReplaceAllExistingValuesGivenAllArgsExist(t *testing.T) { | ||||
func TestMergeForgeConfigShouldReplaceAllExistingValuesGivenAllArgsExist(t *testing.T) { | ||||
runApp( | ||||
t, | ||||
func(ctx *cli.Context) error { | ||||
cfg := &GiteaConfig{ | ||||
cfg := &ForgeConfig{ | ||||
Root: "original", | ||||
Token: "original", | ||||
LFSEnabled: false, | ||||
| @ -379,9 +379,9 @@ func TestMergeGiteaConfigShouldReplaceAllExistingValuesGivenAllArgsExist(t *test | |||
ForbiddenMimeTypes: []string{"original"}, | ||||
} | ||||
| ||||
mergeGiteaConfig(ctx, cfg) | ||||
mergeForgeConfig(ctx, cfg) | ||||
| ||||
expectedConfig := &GiteaConfig{ | ||||
expectedConfig := &ForgeConfig{ | ||||
Root: "changed", | ||||
Token: "changed", | ||||
LFSEnabled: true, | ||||
| @ -395,8 +395,8 @@ func TestMergeGiteaConfigShouldReplaceAllExistingValuesGivenAllArgsExist(t *test | |||
return nil | ||||
}, | ||||
[]string{ | ||||
"--gitea-root", "changed", | ||||
"--gitea-api-token", "changed", | ||||
"--forge-root", "changed", | ||||
"--forge-api-token", "changed", | ||||
"--enable-lfs-support", | ||||
"--enable-symlink-support", | ||||
"--default-mime-type", "changed", | ||||
| @ -405,25 +405,25 @@ func TestMergeGiteaConfigShouldReplaceAllExistingValuesGivenAllArgsExist(t *test | |||
) | ||||
} | ||||
| ||||
func TestMergeGiteaConfigShouldReplaceOnlyOneValueExistingValueGivenOnlyOneArgExists(t *testing.T) { | ||||
func TestMergeForgeConfigShouldReplaceOnlyOneValueExistingValueGivenOnlyOneArgExists(t *testing.T) { | ||||
type testValuePair struct { | ||||
args []string | ||||
callback func(*GiteaConfig) | ||||
callback func(*ForgeConfig) | ||||
} | ||||
testValuePairs := []testValuePair{ | ||||
{args: []string{"--gitea-root", "changed"}, callback: func(gc *GiteaConfig) { gc.Root = "changed" }}, | ||||
{args: []string{"--gitea-api-token", "changed"}, callback: func(gc *GiteaConfig) { gc.Token = "changed" }}, | ||||
{args: []string{"--enable-lfs-support"}, callback: func(gc *GiteaConfig) { gc.LFSEnabled = true }}, | ||||
{args: []string{"--enable-symlink-support"}, callback: func(gc *GiteaConfig) { gc.FollowSymlinks = true }}, | ||||
{args: []string{"--default-mime-type", "changed"}, callback: func(gc *GiteaConfig) { gc.DefaultMimeType = "changed" }}, | ||||
{args: []string{"--forbidden-mime-types", "changed"}, callback: func(gc *GiteaConfig) { gc.ForbiddenMimeTypes = []string{"changed"} }}, | ||||
{args: []string{"--forge-root", "changed"}, callback: func(gc *ForgeConfig) { gc.Root = "changed" }}, | ||||
{args: []string{"--forge-api-token", "changed"}, callback: func(gc *ForgeConfig) { gc.Token = "changed" }}, | ||||
{args: []string{"--enable-lfs-support"}, callback: func(gc *ForgeConfig) { gc.LFSEnabled = true }}, | ||||
{args: []string{"--enable-symlink-support"}, callback: func(gc *ForgeConfig) { gc.FollowSymlinks = true }}, | ||||
{args: []string{"--default-mime-type", "changed"}, callback: func(gc *ForgeConfig) { gc.DefaultMimeType = "changed" }}, | ||||
{args: []string{"--forbidden-mime-types", "changed"}, callback: func(gc *ForgeConfig) { gc.ForbiddenMimeTypes = []string{"changed"} }}, | ||||
} | ||||
| ||||
for _, pair := range testValuePairs { | ||||
runApp( | ||||
t, | ||||
func(ctx *cli.Context) error { | ||||
cfg := GiteaConfig{ | ||||
cfg := ForgeConfig{ | ||||
Root: "original", | ||||
Token: "original", | ||||
LFSEnabled: false, | ||||
| @ -435,7 +435,7 @@ func TestMergeGiteaConfigShouldReplaceOnlyOneValueExistingValueGivenOnlyOneArgEx | |||
expectedConfig := cfg | ||||
pair.callback(&expectedConfig) | ||||
| ||||
mergeGiteaConfig(ctx, &cfg) | ||||
mergeForgeConfig(ctx, &cfg) | ||||
| ||||
expectedConfig.ForbiddenMimeTypes = fixArrayFromCtx(ctx, "forbidden-mime-types", expectedConfig.ForbiddenMimeTypes) | ||||
| ||||
| @ -448,6 +448,33 @@ func TestMergeGiteaConfigShouldReplaceOnlyOneValueExistingValueGivenOnlyOneArgEx | |||
} | ||||
} | ||||
| ||||
func TestMergeForgeConfigShouldReplaceValuesGivenGiteaOptionsExist(t *testing.T) { | ||||
runApp( | ||||
t, | ||||
func(ctx *cli.Context) error { | ||||
cfg := &ForgeConfig{ | ||||
Root: "original", | ||||
Token: "original", | ||||
} | ||||
| ||||
mergeForgeConfig(ctx, cfg) | ||||
| ||||
expectedConfig := &ForgeConfig{ | ||||
Root: "changed", | ||||
Token: "changed", | ||||
} | ||||
| ||||
assert.Equal(t, expectedConfig, cfg) | ||||
| ||||
return nil | ||||
}, | ||||
[]string{ | ||||
"--gitea-root", "changed", | ||||
"--gitea-api-token", "changed", | ||||
}, | ||||
) | ||||
} | ||||
| ||||
func TestMergeDatabaseConfigShouldReplaceAllExistingValuesGivenAllArgsExist(t *testing.T) { | ||||
runApp( | ||||
t, | ||||
| |
| @ -11,7 +11,7 @@ pagesBranches = ["pages"] | |||
allowedCorsDomains = [] | ||||
blacklistedPaths = [] | ||||
| ||||
[gitea] | ||||
[forge] | ||||
root = 'https://codeberg.org' | ||||
token = 'ASDF1234' | ||||
lfsEnabled = true | ||||
| |
| @ -57,12 +57,13 @@ type Client struct { | |||
defaultMimeType string | ||||
} | ||||
| ||||
func NewClient(cfg config.GiteaConfig, respCache cache.ICache) (*Client, error) { | ||||
rootURL, err := url.Parse(cfg.Root) | ||||
func NewClient(cfg config.ForgeConfig, respCache cache.ICache) (*Client, error) { | ||||
// url.Parse returns valid on almost anything... | ||||
rootURL, err := url.ParseRequestURI(cfg.Root) | ||||
if err != nil { | ||||
return nil, err | ||||
return nil, fmt.Errorf("invalid forgejo/gitea root url: %w", err) | ||||
} | ||||
giteaRoot := strings.Trim(rootURL.String(), "/") | ||||
giteaRoot := strings.TrimSuffix(rootURL.String(), "/") | ||||
| ||||
stdClient := http.Client{Timeout: 10 * time.Second} | ||||
| ||||
| |
| @ -13,7 +13,7 @@ import ( | |||
) | ||||
| ||||
func TestHandlerPerformance(t *testing.T) { | ||||
cfg := config.GiteaConfig{ | ||||
cfg := config.ForgeConfig{ | ||||
Root: "https://codeberg.org", | ||||
Token: "", | ||||
LFSEnabled: false, | ||||
| |
| @ -77,7 +77,7 @@ func Serve(ctx *cli.Context) error { | |||
// clientResponseCache stores responses from the Gitea server | ||||
clientResponseCache := cache.NewInMemoryCache() | ||||
| ||||
giteaClient, err := gitea.NewClient(cfg.Gitea, clientResponseCache) | ||||
giteaClient, err := gitea.NewClient(cfg.Forge, clientResponseCache) | ||||
if err != nil { | ||||
return fmt.Errorf("could not create new gitea client: %v", err) | ||||
} | ||||
| |
Loading…
Add table
Add a link
Reference in a new issue