diff --git a/op-deployer/pkg/cli/app.go b/op-deployer/pkg/cli/app.go index 099be7767f9d8..10968280d09fc 100644 --- a/op-deployer/pkg/cli/app.go +++ b/op-deployer/pkg/cli/app.go @@ -20,6 +20,12 @@ func NewApp(versionWithMeta string) *cli.App { app.Name = "op-deployer" app.Usage = "Tool to configure and deploy OP Chains." app.Flags = cliapp.ProtectFlags(deployer.GlobalFlags) + app.Before = func(context *cli.Context) error { + if err := deployer.CreateCacheDir(context.String(deployer.CacheDirFlagName)); err != nil { + return err + } + return nil + } app.Commands = []*cli.Command{ { Name: "init", diff --git a/op-deployer/pkg/deployer/flags.go b/op-deployer/pkg/deployer/flags.go index bcd3a71d49d74..c4518c88fa1a5 100644 --- a/op-deployer/pkg/deployer/flags.go +++ b/op-deployer/pkg/deployer/flags.go @@ -48,7 +48,7 @@ var ( Usage: "Cache directory. " + "If set, the deployer will attempt to cache downloaded artifacts in the specified directory.", EnvVars: PrefixEnvVar("CACHE_DIR"), - Value: EnsureDefaultCacheDir(), + Value: DefaultCacheDir(), } L1ChainIDFlag = &cli.Uint64Flag{ Name: L1ChainIDFlagName, diff --git a/op-deployer/pkg/deployer/utils.go b/op-deployer/pkg/deployer/utils.go index 382fdcffd0e73..09691e71c6a4a 100644 --- a/op-deployer/pkg/deployer/utils.go +++ b/op-deployer/pkg/deployer/utils.go @@ -39,7 +39,7 @@ func cwd() string { return dir } -func EnsureDefaultCacheDir() string { +func DefaultCacheDir() string { var cacheDir string homeDir, err := os.UserHomeDir() @@ -50,9 +50,12 @@ func EnsureDefaultCacheDir() string { cacheDir = path.Join(homeDir, ".op-deployer/cache") } + return cacheDir +} + +func CreateCacheDir(cacheDir string) error { if err := os.MkdirAll(cacheDir, 0755); err != nil { - panic(fmt.Sprintf("failed to create cache directory %s: %v", cacheDir, err)) + return fmt.Errorf("failed to create cache directory %s: %w", cacheDir, err) } - - return cacheDir + return nil } diff --git a/op-deployer/pkg/deployer/utils_test.go b/op-deployer/pkg/deployer/utils_test.go index a4ff0d5e7efbf..9e13ff5d4d7c2 100644 --- a/op-deployer/pkg/deployer/utils_test.go +++ b/op-deployer/pkg/deployer/utils_test.go @@ -7,6 +7,6 @@ import ( ) func TestEnsureDefaultCacheDir(t *testing.T) { - cacheDir := EnsureDefaultCacheDir() + cacheDir := DefaultCacheDir() require.NotNil(t, cacheDir) } diff --git a/op-deployer/pkg/deployer/verify/verifier.go b/op-deployer/pkg/deployer/verify/verifier.go index 0bc9e3c3bf187..fe865d5da7a27 100644 --- a/op-deployer/pkg/deployer/verify/verifier.go +++ b/op-deployer/pkg/deployer/verify/verifier.go @@ -88,7 +88,7 @@ func VerifyCLI(cliCtx *cli.Context) error { if err != nil { return fmt.Errorf("failed to parse l1 contracts release locator: %w", err) } - artifactsFS, err := artifacts.Download(ctx, locator, nil, deployer.EnsureDefaultCacheDir()) + artifactsFS, err := artifacts.Download(ctx, locator, nil, deployer.DefaultCacheDir()) if err != nil { return fmt.Errorf("failed to get artifacts: %w", err) }