on main help sign in
feat(cmd): support overriding the data directory
f74abf2Vincent Ambo
internal/cmd/logs.go+6−1
@@ -28,6 +28,11 @@ var logsCmd = &cobra.Command{
28 return fmt.Errorf("failed to get current working directory: %v", err)
28 return fmt.Errorf("failed to get current working directory: %v", err)
29 }
29 }
30
30
31+ dataDir, err := cmd.Flags().GetString("data-dir")
32+ if err != nil {
33+ return fmt.Errorf("failed to get data directory: %v", err)
34+ }
35+
31 follow, err := cmd.Flags().GetBool("follow")
36 follow, err := cmd.Flags().GetBool("follow")
32 if err != nil {
37 if err != nil {
33 return fmt.Errorf("failed to get follow flag: %v", err)
38 return fmt.Errorf("failed to get follow flag: %v", err)
@@ -41,7 +46,7 @@ var logsCmd = &cobra.Command{
41 log.SetLevel(log.DebugLevel)
46 log.SetLevel(log.DebugLevel)
42 log.SetOutput(os.Stdout)
47 log.SetOutput(os.Stdout)
43
48
44− cfg, err := config.Load(cwd, false)
49+ cfg, err := config.Load(cwd, dataDir, false)
45 if err != nil {
50 if err != nil {
46 return fmt.Errorf("failed to load configuration: %v", err)
51 return fmt.Errorf("failed to load configuration: %v", err)
47 }
52 }
internal/cmd/root.go+6−1
@@ -21,6 +21,7 @@ import (
21
21
22func init() {
22func init() {
23 rootCmd.PersistentFlags().StringP("cwd", "c", "", "Current working directory")
23 rootCmd.PersistentFlags().StringP("cwd", "c", "", "Current working directory")
24+ rootCmd.PersistentFlags().StringP("data-dir", "D", "", "Custom crush data directory")
24 rootCmd.PersistentFlags().BoolP("debug", "d", false, "Debug")
25 rootCmd.PersistentFlags().BoolP("debug", "d", false, "Debug")
25
26
26 rootCmd.Flags().BoolP("help", "h", false, "Help")
27 rootCmd.Flags().BoolP("help", "h", false, "Help")
@@ -45,6 +46,9 @@ crush -d
45# Run with debug logging in a specific directory
46# Run with debug logging in a specific directory
46crush -d -c /path/to/project
47crush -d -c /path/to/project
47
48
49+# Run with custom data directory
50+crush -D /path/to/custom/.crush
51+
48# Print version
52# Print version
49crush -v
53crush -v
50
54
@@ -96,6 +100,7 @@ func Execute() {
96func setupApp(cmd *cobra.Command) (*app.App, error) {
100func setupApp(cmd *cobra.Command) (*app.App, error) {
97 debug, _ := cmd.Flags().GetBool("debug")
101 debug, _ := cmd.Flags().GetBool("debug")
98 yolo, _ := cmd.Flags().GetBool("yolo")
102 yolo, _ := cmd.Flags().GetBool("yolo")
103+ dataDir, _ := cmd.Flags().GetString("data-dir")
99 ctx := cmd.Context()
104 ctx := cmd.Context()
100
105
101 cwd, err := ResolveCwd(cmd)
106 cwd, err := ResolveCwd(cmd)
@@ -103,7 +108,7 @@ func setupApp(cmd *cobra.Command) (*app.App, error) {
103 return nil, err
108 return nil, err
104 }
109 }
105
110
106− cfg, err := config.Init(cwd, debug)
111+ cfg, err := config.Init(cwd, dataDir, debug)
107 if err != nil {
112 if err != nil {
108 return nil, err
113 return nil, err
109 }
114 }
internal/config/init.go+2−2
@@ -19,8 +19,8 @@ type ProjectInitFlag struct {
19// TODO: we need to remove the global config instance keeping it now just until everything is migrated
19// TODO: we need to remove the global config instance keeping it now just until everything is migrated
20var instance atomic.Pointer[Config]
20var instance atomic.Pointer[Config]
21
21
22−func Init(workingDir string, debug bool) (*Config, error) {
22+func Init(workingDir, dataDir string, debug bool) (*Config, error) {
23− cfg, err := Load(workingDir, debug)
23+ cfg, err := Load(workingDir, dataDir, debug)
24 if err != nil {
24 if err != nil {
25 return nil, err
25 return nil, err
26 }
26 }
internal/config/load.go+7−3
@@ -37,7 +37,7 @@ func LoadReader(fd io.Reader) (*Config, error) {
37}
37}
38
38
39// Load loads the configuration from the default paths.
39// Load loads the configuration from the default paths.
40−func Load(workingDir string, debug bool) (*Config, error) {
40+func Load(workingDir, dataDir string, debug bool) (*Config, error) {
41 // uses default config paths
41 // uses default config paths
42 configPaths := []string{
42 configPaths := []string{
43 globalConfig(),
43 globalConfig(),
@@ -52,7 +52,7 @@ func Load(workingDir string, debug bool) (*Config, error) {
52
52
53 cfg.dataConfigDir = GlobalConfigData()
53 cfg.dataConfigDir = GlobalConfigData()
54
54
55− cfg.setDefaults(workingDir)
55+ cfg.setDefaults(workingDir, dataDir)
56
56
57 if debug {
57 if debug {
58 cfg.Options.Debug = true
58 cfg.Options.Debug = true
@@ -299,7 +299,7 @@ func (c *Config) configureProviders(env env.Env, resolver VariableResolver, know
299 return nil
299 return nil
300}
300}
301
301
302−func (c *Config) setDefaults(workingDir string) {
302+func (c *Config) setDefaults(workingDir, dataDir string) {
303 c.workingDir = workingDir
303 c.workingDir = workingDir
304 if c.Options == nil {
304 if c.Options == nil {
305 c.Options = &Options{}
305 c.Options = &Options{}
@@ -317,6 +317,10 @@ func (c *Config) setDefaults(workingDir string) {
317 c.Options.DataDirectory = filepath.Join(workingDir, defaultDataDirectory)
317 c.Options.DataDirectory = filepath.Join(workingDir, defaultDataDirectory)
318 }
318 }
319 }
319 }
320+ // explicit dataDir flag always takes precedence
321+ if dataDir != "" {
322+ c.Options.DataDirectory = dataDir
323+ }
320 if c.Providers == nil {
324 if c.Providers == nil {
321 c.Providers = csync.NewMap[string, ProviderConfig]()
325 c.Providers = csync.NewMap[string, ProviderConfig]()
322 }
326 }
internal/config/load_test.go+32−32
@@ -39,7 +39,7 @@ func TestConfig_LoadFromReaders(t *testing.T) {
39func TestConfig_setDefaults(t *testing.T) {
39func TestConfig_setDefaults(t *testing.T) {
40 cfg := &Config{}
40 cfg := &Config{}
41
41
42− cfg.setDefaults("/tmp")
42+ cfg.setDefaults("/tmp", "")
43
43
44 require.NotNil(t, cfg.Options)
44 require.NotNil(t, cfg.Options)
45 require.NotNil(t, cfg.Options.TUI)
45 require.NotNil(t, cfg.Options.TUI)
@@ -68,7 +68,7 @@ func TestConfig_configureProviders(t *testing.T) {
68 }
68 }
69
69
70 cfg := &Config{}
70 cfg := &Config{}
71− cfg.setDefaults("/tmp")
71+ cfg.setDefaults("/tmp", "")
72 env := env.NewFromMap(map[string]string{
72 env := env.NewFromMap(map[string]string{
73 "OPENAI_API_KEY": "test-key",
73 "OPENAI_API_KEY": "test-key",
74 })
74 })
@@ -110,7 +110,7 @@ func TestConfig_configureProvidersWithOverride(t *testing.T) {
110 },
110 },
111 },
111 },
112 })
112 })
113− cfg.setDefaults("/tmp")
113+ cfg.setDefaults("/tmp", "")
114
114
115 env := env.NewFromMap(map[string]string{
115 env := env.NewFromMap(map[string]string{
116 "OPENAI_API_KEY": "test-key",
116 "OPENAI_API_KEY": "test-key",
@@ -153,7 +153,7 @@ func TestConfig_configureProvidersWithNewProvider(t *testing.T) {
153 },
153 },
154 }),
154 }),
155 }
155 }
156− cfg.setDefaults("/tmp")
156+ cfg.setDefaults("/tmp", "")
157 env := env.NewFromMap(map[string]string{
157 env := env.NewFromMap(map[string]string{
158 "OPENAI_API_KEY": "test-key",
158 "OPENAI_API_KEY": "test-key",
159 })
159 })
@@ -188,7 +188,7 @@ func TestConfig_configureProvidersBedrockWithCredentials(t *testing.T) {
188 }
188 }
189
189
190 cfg := &Config{}
190 cfg := &Config{}
191− cfg.setDefaults("/tmp")
191+ cfg.setDefaults("/tmp", "")
192 env := env.NewFromMap(map[string]string{
192 env := env.NewFromMap(map[string]string{
193 "AWS_ACCESS_KEY_ID": "test-key-id",
193 "AWS_ACCESS_KEY_ID": "test-key-id",
194 "AWS_SECRET_ACCESS_KEY": "test-secret-key",
194 "AWS_SECRET_ACCESS_KEY": "test-secret-key",
@@ -217,7 +217,7 @@ func TestConfig_configureProvidersBedrockWithoutCredentials(t *testing.T) {
217 }
217 }
218
218
219 cfg := &Config{}
219 cfg := &Config{}
220− cfg.setDefaults("/tmp")
220+ cfg.setDefaults("/tmp", "")
221 env := env.NewFromMap(map[string]string{})
221 env := env.NewFromMap(map[string]string{})
222 resolver := NewEnvironmentVariableResolver(env)
222 resolver := NewEnvironmentVariableResolver(env)
223 err := cfg.configureProviders(env, resolver, knownProviders)
223 err := cfg.configureProviders(env, resolver, knownProviders)
@@ -239,7 +239,7 @@ func TestConfig_configureProvidersBedrockWithoutUnsupportedModel(t *testing.T) {
239 }
239 }
240
240
241 cfg := &Config{}
241 cfg := &Config{}
242− cfg.setDefaults("/tmp")
242+ cfg.setDefaults("/tmp", "")
243 env := env.NewFromMap(map[string]string{
243 env := env.NewFromMap(map[string]string{
244 "AWS_ACCESS_KEY_ID": "test-key-id",
244 "AWS_ACCESS_KEY_ID": "test-key-id",
245 "AWS_SECRET_ACCESS_KEY": "test-secret-key",
245 "AWS_SECRET_ACCESS_KEY": "test-secret-key",
@@ -262,7 +262,7 @@ func TestConfig_configureProvidersVertexAIWithCredentials(t *testing.T) {
262 }
262 }
263
263
264 cfg := &Config{}
264 cfg := &Config{}
265− cfg.setDefaults("/tmp")
265+ cfg.setDefaults("/tmp", "")
266 env := env.NewFromMap(map[string]string{
266 env := env.NewFromMap(map[string]string{
267 "VERTEXAI_PROJECT": "test-project",
267 "VERTEXAI_PROJECT": "test-project",
268 "VERTEXAI_LOCATION": "us-central1",
268 "VERTEXAI_LOCATION": "us-central1",
@@ -293,7 +293,7 @@ func TestConfig_configureProvidersVertexAIWithoutCredentials(t *testing.T) {
293 }
293 }
294
294
295 cfg := &Config{}
295 cfg := &Config{}
296− cfg.setDefaults("/tmp")
296+ cfg.setDefaults("/tmp", "")
297 env := env.NewFromMap(map[string]string{
297 env := env.NewFromMap(map[string]string{
298 "GOOGLE_GENAI_USE_VERTEXAI": "false",
298 "GOOGLE_GENAI_USE_VERTEXAI": "false",
299 "GOOGLE_CLOUD_PROJECT": "test-project",
299 "GOOGLE_CLOUD_PROJECT": "test-project",
@@ -319,7 +319,7 @@ func TestConfig_configureProvidersVertexAIMissingProject(t *testing.T) {
319 }
319 }
320
320
321 cfg := &Config{}
321 cfg := &Config{}
322− cfg.setDefaults("/tmp")
322+ cfg.setDefaults("/tmp", "")
323 env := env.NewFromMap(map[string]string{
323 env := env.NewFromMap(map[string]string{
324 "GOOGLE_GENAI_USE_VERTEXAI": "true",
324 "GOOGLE_GENAI_USE_VERTEXAI": "true",
325 "GOOGLE_CLOUD_LOCATION": "us-central1",
325 "GOOGLE_CLOUD_LOCATION": "us-central1",
@@ -344,7 +344,7 @@ func TestConfig_configureProvidersSetProviderID(t *testing.T) {
344 }
344 }
345
345
346 cfg := &Config{}
346 cfg := &Config{}
347− cfg.setDefaults("/tmp")
347+ cfg.setDefaults("/tmp", "")
348 env := env.NewFromMap(map[string]string{
348 env := env.NewFromMap(map[string]string{
349 "OPENAI_API_KEY": "test-key",
349 "OPENAI_API_KEY": "test-key",
350 })
350 })
@@ -472,7 +472,7 @@ func TestConfig_configureProvidersWithDisabledProvider(t *testing.T) {
472 },
472 },
473 }),
473 }),
474 }
474 }
475− cfg.setDefaults("/tmp")
475+ cfg.setDefaults("/tmp", "")
476
476
477 env := env.NewFromMap(map[string]string{
477 env := env.NewFromMap(map[string]string{
478 "OPENAI_API_KEY": "test-key",
478 "OPENAI_API_KEY": "test-key",
@@ -502,7 +502,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
502 },
502 },
503 }),
503 }),
504 }
504 }
505− cfg.setDefaults("/tmp")
505+ cfg.setDefaults("/tmp", "")
506
506
507 env := env.NewFromMap(map[string]string{})
507 env := env.NewFromMap(map[string]string{})
508 resolver := NewEnvironmentVariableResolver(env)
508 resolver := NewEnvironmentVariableResolver(env)
@@ -525,7 +525,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
525 },
525 },
526 }),
526 }),
527 }
527 }
528− cfg.setDefaults("/tmp")
528+ cfg.setDefaults("/tmp", "")
529
529
530 env := env.NewFromMap(map[string]string{})
530 env := env.NewFromMap(map[string]string{})
531 resolver := NewEnvironmentVariableResolver(env)
531 resolver := NewEnvironmentVariableResolver(env)
@@ -547,7 +547,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
547 },
547 },
548 }),
548 }),
549 }
549 }
550− cfg.setDefaults("/tmp")
550+ cfg.setDefaults("/tmp", "")
551
551
552 env := env.NewFromMap(map[string]string{})
552 env := env.NewFromMap(map[string]string{})
553 resolver := NewEnvironmentVariableResolver(env)
553 resolver := NewEnvironmentVariableResolver(env)
@@ -572,7 +572,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
572 },
572 },
573 }),
573 }),
574 }
574 }
575− cfg.setDefaults("/tmp")
575+ cfg.setDefaults("/tmp", "")
576
576
577 env := env.NewFromMap(map[string]string{})
577 env := env.NewFromMap(map[string]string{})
578 resolver := NewEnvironmentVariableResolver(env)
578 resolver := NewEnvironmentVariableResolver(env)
@@ -597,7 +597,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
597 },
597 },
598 }),
598 }),
599 }
599 }
600− cfg.setDefaults("/tmp")
600+ cfg.setDefaults("/tmp", "")
601
601
602 env := env.NewFromMap(map[string]string{})
602 env := env.NewFromMap(map[string]string{})
603 resolver := NewEnvironmentVariableResolver(env)
603 resolver := NewEnvironmentVariableResolver(env)
@@ -625,7 +625,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
625 },
625 },
626 }),
626 }),
627 }
627 }
628− cfg.setDefaults("/tmp")
628+ cfg.setDefaults("/tmp", "")
629
629
630 env := env.NewFromMap(map[string]string{})
630 env := env.NewFromMap(map[string]string{})
631 resolver := NewEnvironmentVariableResolver(env)
631 resolver := NewEnvironmentVariableResolver(env)
@@ -655,7 +655,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
655 },
655 },
656 }),
656 }),
657 }
657 }
658− cfg.setDefaults("/tmp")
658+ cfg.setDefaults("/tmp", "")
659
659
660 env := env.NewFromMap(map[string]string{})
660 env := env.NewFromMap(map[string]string{})
661 resolver := NewEnvironmentVariableResolver(env)
661 resolver := NewEnvironmentVariableResolver(env)
@@ -688,7 +688,7 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
688 },
688 },
689 }),
689 }),
690 }
690 }
691− cfg.setDefaults("/tmp")
691+ cfg.setDefaults("/tmp", "")
692
692
693 env := env.NewFromMap(map[string]string{
693 env := env.NewFromMap(map[string]string{
694 "GOOGLE_GENAI_USE_VERTEXAI": "false",
694 "GOOGLE_GENAI_USE_VERTEXAI": "false",
@@ -721,7 +721,7 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
721 },
721 },
722 }),
722 }),
723 }
723 }
724− cfg.setDefaults("/tmp")
724+ cfg.setDefaults("/tmp", "")
725
725
726 env := env.NewFromMap(map[string]string{})
726 env := env.NewFromMap(map[string]string{})
727 resolver := NewEnvironmentVariableResolver(env)
727 resolver := NewEnvironmentVariableResolver(env)
@@ -752,7 +752,7 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
752 },
752 },
753 }),
753 }),
754 }
754 }
755− cfg.setDefaults("/tmp")
755+ cfg.setDefaults("/tmp", "")
756
756
757 env := env.NewFromMap(map[string]string{})
757 env := env.NewFromMap(map[string]string{})
758 resolver := NewEnvironmentVariableResolver(env)
758 resolver := NewEnvironmentVariableResolver(env)
@@ -783,7 +783,7 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
783 },
783 },
784 }),
784 }),
785 }
785 }
786− cfg.setDefaults("/tmp")
786+ cfg.setDefaults("/tmp", "")
787
787
788 env := env.NewFromMap(map[string]string{
788 env := env.NewFromMap(map[string]string{
789 "OPENAI_API_KEY": "test-key",
789 "OPENAI_API_KEY": "test-key",
@@ -820,7 +820,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
820 }
820 }
821
821
822 cfg := &Config{}
822 cfg := &Config{}
823− cfg.setDefaults("/tmp")
823+ cfg.setDefaults("/tmp", "")
824 env := env.NewFromMap(map[string]string{})
824 env := env.NewFromMap(map[string]string{})
825 resolver := NewEnvironmentVariableResolver(env)
825 resolver := NewEnvironmentVariableResolver(env)
826 err := cfg.configureProviders(env, resolver, knownProviders)
826 err := cfg.configureProviders(env, resolver, knownProviders)
@@ -856,7 +856,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
856 }
856 }
857
857
858 cfg := &Config{}
858 cfg := &Config{}
859− cfg.setDefaults("/tmp")
859+ cfg.setDefaults("/tmp", "")
860 env := env.NewFromMap(map[string]string{})
860 env := env.NewFromMap(map[string]string{})
861 resolver := NewEnvironmentVariableResolver(env)
861 resolver := NewEnvironmentVariableResolver(env)
862 err := cfg.configureProviders(env, resolver, knownProviders)
862 err := cfg.configureProviders(env, resolver, knownProviders)
@@ -886,7 +886,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
886 }
886 }
887
887
888 cfg := &Config{}
888 cfg := &Config{}
889− cfg.setDefaults("/tmp")
889+ cfg.setDefaults("/tmp", "")
890 env := env.NewFromMap(map[string]string{})
890 env := env.NewFromMap(map[string]string{})
891 resolver := NewEnvironmentVariableResolver(env)
891 resolver := NewEnvironmentVariableResolver(env)
892 err := cfg.configureProviders(env, resolver, knownProviders)
892 err := cfg.configureProviders(env, resolver, knownProviders)
@@ -929,7 +929,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
929 },
929 },
930 }),
930 }),
931 }
931 }
932− cfg.setDefaults("/tmp")
932+ cfg.setDefaults("/tmp", "")
933 env := env.NewFromMap(map[string]string{})
933 env := env.NewFromMap(map[string]string{})
934 resolver := NewEnvironmentVariableResolver(env)
934 resolver := NewEnvironmentVariableResolver(env)
935 err := cfg.configureProviders(env, resolver, knownProviders)
935 err := cfg.configureProviders(env, resolver, knownProviders)
@@ -973,7 +973,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
973 },
973 },
974 }),
974 }),
975 }
975 }
976− cfg.setDefaults("/tmp")
976+ cfg.setDefaults("/tmp", "")
977 env := env.NewFromMap(map[string]string{})
977 env := env.NewFromMap(map[string]string{})
978 resolver := NewEnvironmentVariableResolver(env)
978 resolver := NewEnvironmentVariableResolver(env)
979 err := cfg.configureProviders(env, resolver, knownProviders)
979 err := cfg.configureProviders(env, resolver, knownProviders)
@@ -1015,7 +1015,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
1015 },
1015 },
1016 }),
1016 }),
1017 }
1017 }
1018− cfg.setDefaults("/tmp")
1018+ cfg.setDefaults("/tmp", "")
1019 env := env.NewFromMap(map[string]string{})
1019 env := env.NewFromMap(map[string]string{})
1020 resolver := NewEnvironmentVariableResolver(env)
1020 resolver := NewEnvironmentVariableResolver(env)
1021 err := cfg.configureProviders(env, resolver, knownProviders)
1021 err := cfg.configureProviders(env, resolver, knownProviders)
@@ -1063,7 +1063,7 @@ func TestConfig_configureSelectedModels(t *testing.T) {
1063 },
1063 },
1064 },
1064 },
1065 }
1065 }
1066− cfg.setDefaults("/tmp")
1066+ cfg.setDefaults("/tmp", "")
1067 env := env.NewFromMap(map[string]string{})
1067 env := env.NewFromMap(map[string]string{})
1068 resolver := NewEnvironmentVariableResolver(env)
1068 resolver := NewEnvironmentVariableResolver(env)
1069 err := cfg.configureProviders(env, resolver, knownProviders)
1069 err := cfg.configureProviders(env, resolver, knownProviders)
@@ -1125,7 +1125,7 @@ func TestConfig_configureSelectedModels(t *testing.T) {
1125 },
1125 },
1126 },
1126 },
1127 }
1127 }
1128− cfg.setDefaults("/tmp")
1128+ cfg.setDefaults("/tmp", "")
1129 env := env.NewFromMap(map[string]string{})
1129 env := env.NewFromMap(map[string]string{})
1130 resolver := NewEnvironmentVariableResolver(env)
1130 resolver := NewEnvironmentVariableResolver(env)
1131 err := cfg.configureProviders(env, resolver, knownProviders)
1131 err := cfg.configureProviders(env, resolver, knownProviders)
@@ -1170,7 +1170,7 @@ func TestConfig_configureSelectedModels(t *testing.T) {
1170 },
1170 },
1171 },
1171 },
1172 }
1172 }
1173− cfg.setDefaults("/tmp")
1173+ cfg.setDefaults("/tmp", "")
1174 env := env.NewFromMap(map[string]string{})
1174 env := env.NewFromMap(map[string]string{})
1175 resolver := NewEnvironmentVariableResolver(env)
1175 resolver := NewEnvironmentVariableResolver(env)
1176 err := cfg.configureProviders(env, resolver, knownProviders)
1176 err := cfg.configureProviders(env, resolver, knownProviders)
internal/llm/provider/openai_test.go+1−1
@@ -17,7 +17,7 @@ import (
17)
17)
18
18
19func TestMain(m *testing.M) {
19func TestMain(m *testing.M) {
20− _, err := config.Init(".", true)
20+ _, err := config.Init(".", "", true)
21 if err != nil {
21 if err != nil {
22 panic("Failed to initialize config: " + err.Error())
22 panic("Failed to initialize config: " + err.Error())
23 }
23 }