Detailed changes
@@ -37,7 +37,15 @@ var (
keyPath := os.Getenv("SOFT_SERVE_KEY_PATH")
reposPath := os.Getenv("SOFT_SERVE_REPO_PATH")
bindAddr := os.Getenv("SOFT_SERVE_BIND_ADDRESS")
+
+ // Set up config
cfg := config.DefaultConfig()
+ if !cfg.Exist() {
+ if err := cfg.WriteConfig(); err != nil {
+ return fmt.Errorf("failed to write default config: %w", err)
+ }
+ }
+
ctx = config.WithContext(ctx, cfg)
sb, err := sqlite.NewSqliteBackend(ctx)
if err != nil {
@@ -22,7 +22,15 @@ var (
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, _ []string) error {
ctx := cmd.Context()
+
+ // Set up config
cfg := config.DefaultConfig()
+ if !cfg.Exist() {
+ if err := cfg.WriteConfig(); err != nil {
+ return fmt.Errorf("failed to write default config: %w", err)
+ }
+ }
+
ctx = config.WithContext(ctx, cfg)
cmd.SetContext(ctx)
@@ -45,7 +45,13 @@ func main() {
log.Fatal("Setuid error", "err", err)
}
ctx := context.Background()
+ // Set up config
cfg := config.DefaultConfig()
+ if !cfg.Exist() {
+ if err := cfg.WriteConfig(); err != nil {
+ log.Fatal("failed to write default config: %w", err)
+ }
+ }
ctx = config.WithContext(ctx, cfg)
cfg.SSH.ListenAddr = fmt.Sprintf(":%d", *port)
s, err := server.NewServer(ctx)
@@ -256,13 +256,6 @@ func DefaultConfig() *Config {
log.Errorf("failed to parse config: %v", err)
}
- // Write config if it doesn't exist
- if _, err := os.Stat(cp); os.IsNotExist(err) {
- if err := WriteConfig(cp, cfg); err != nil {
- log.Fatal("failed to write config", "err", err)
- }
- }
-
if err := cfg.validate(); err != nil {
log.Fatal(err)
}
@@ -270,6 +263,17 @@ func DefaultConfig() *Config {
return cfg
}
+// Exist returns true if the configuration file exists.
+func (c *Config) Exist() bool {
+ _, err := os.Stat(filepath.Join(c.DataPath, "config.yaml"))
+ return err == nil
+}
+
+// WriteConfig writes the configuration in the default path.
+func (c *Config) WriteConfig() error {
+ return WriteConfig(filepath.Join(c.DataPath, "config.yaml"), c)
+}
+
// WithBackend sets the backend for the configuration.
func (c *Config) WithBackend(backend backend.Backend) *Config {
c.Backend = backend
@@ -35,6 +35,9 @@ func TestMain(m *testing.M) {
os.Setenv("SOFT_SERVE_GIT_LISTEN_ADDR", fmt.Sprintf(":%d", test.RandomPort()))
ctx := context.TODO()
cfg := config.DefaultConfig()
+ if err := cfg.WriteConfig(); err != nil {
+ log.Fatal("failed to write default config: %w", err)
+ }
ctx = config.WithContext(ctx, cfg)
fb, err := sqlite.NewSqliteBackend(ctx)
if err != nil {
@@ -27,6 +27,9 @@ func setupServer(tb testing.TB) (*Server, *config.Config, string) {
tb.Setenv("SOFT_SERVE_GIT_LISTEN_ADDR", fmt.Sprintf(":%d", test.RandomPort()))
ctx := context.TODO()
cfg := config.DefaultConfig()
+ if err := cfg.WriteConfig(); err != nil {
+ tb.Fatal("failed to write default config: %w", err)
+ }
ctx = config.WithContext(ctx, cfg)
tb.Log("configuring server")
s, err := NewServer(ctx)