From 93798cb51481781ccebaef130b340ad318e12ab8 Mon Sep 17 00:00:00 2001 From: Samuel Stokes Date: Tue, 9 Sep 2025 23:02:54 -0400 Subject: [PATCH] fix(op-deployer): EnsureDefaultCacheDir --- op-deployer/pkg/deployer/flags.go | 47 +---------------- op-deployer/pkg/deployer/utils.go | 58 +++++++++++++++++++++ op-deployer/pkg/deployer/utils_test.go | 12 +++++ op-deployer/pkg/deployer/verify/verifier.go | 2 +- 4 files changed, 72 insertions(+), 47 deletions(-) create mode 100644 op-deployer/pkg/deployer/utils.go create mode 100644 op-deployer/pkg/deployer/utils_test.go diff --git a/op-deployer/pkg/deployer/flags.go b/op-deployer/pkg/deployer/flags.go index 10681d911883b..bcd3a71d49d74 100644 --- a/op-deployer/pkg/deployer/flags.go +++ b/op-deployer/pkg/deployer/flags.go @@ -2,9 +2,6 @@ package deployer import ( "fmt" - "log" - "os" - "path" "github.com/ethereum-optimism/optimism/op-deployer/pkg/deployer/artifacts" @@ -31,40 +28,6 @@ const ( ContractNameFlagName = "contract-name" ) -type DeploymentTarget string - -const ( - DeploymentTargetLive DeploymentTarget = "live" - DeploymentTargetGenesis DeploymentTarget = "genesis" - DeploymentTargetCalldata DeploymentTarget = "calldata" - DeploymentTargetNoop DeploymentTarget = "noop" -) - -func NewDeploymentTarget(s string) (DeploymentTarget, error) { - switch s { - case string(DeploymentTargetLive): - return DeploymentTargetLive, nil - case string(DeploymentTargetGenesis): - return DeploymentTargetGenesis, nil - case string(DeploymentTargetCalldata): - return DeploymentTargetCalldata, nil - case string(DeploymentTargetNoop): - return DeploymentTargetNoop, nil - default: - return "", fmt.Errorf("invalid deployment target: %s", s) - } -} - -func GetDefaultCacheDir() string { - homeDir, err := os.UserHomeDir() - if err != nil { - fallbackDir := ".op-deployer/cache" - log.Printf("error getting user home directory: %v, using fallback directory: %s\n", err, fallbackDir) - return fallbackDir - } - return path.Join(homeDir, ".op-deployer/cache") -} - var ( L1RPCURLFlag = &cli.StringFlag{ Name: L1RPCURLFlagName, @@ -85,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: GetDefaultCacheDir(), + Value: EnsureDefaultCacheDir(), } L1ChainIDFlag = &cli.Uint64Flag{ Name: L1ChainIDFlagName, @@ -187,11 +150,3 @@ var VerifyFlags = []cli.Flag{ func PrefixEnvVar(name string) []string { return op_service.PrefixEnvVar(EnvVarPrefix, name) } - -func cwd() string { - dir, err := os.Getwd() - if err != nil { - return "" - } - return dir -} diff --git a/op-deployer/pkg/deployer/utils.go b/op-deployer/pkg/deployer/utils.go new file mode 100644 index 0000000000000..382fdcffd0e73 --- /dev/null +++ b/op-deployer/pkg/deployer/utils.go @@ -0,0 +1,58 @@ +package deployer + +import ( + "fmt" + "log" + "os" + "path" +) + +type DeploymentTarget string + +const ( + DeploymentTargetLive DeploymentTarget = "live" + DeploymentTargetGenesis DeploymentTarget = "genesis" + DeploymentTargetCalldata DeploymentTarget = "calldata" + DeploymentTargetNoop DeploymentTarget = "noop" +) + +func NewDeploymentTarget(s string) (DeploymentTarget, error) { + switch s { + case string(DeploymentTargetLive): + return DeploymentTargetLive, nil + case string(DeploymentTargetGenesis): + return DeploymentTargetGenesis, nil + case string(DeploymentTargetCalldata): + return DeploymentTargetCalldata, nil + case string(DeploymentTargetNoop): + return DeploymentTargetNoop, nil + default: + return "", fmt.Errorf("invalid deployment target: %s", s) + } +} + +func cwd() string { + dir, err := os.Getwd() + if err != nil { + return "" + } + return dir +} + +func EnsureDefaultCacheDir() string { + var cacheDir string + + homeDir, err := os.UserHomeDir() + if err != nil { + cacheDir = ".op-deployer/cache" + log.Printf("error getting user home directory: %v, using fallback directory: %s\n", err, cacheDir) + } else { + cacheDir = path.Join(homeDir, ".op-deployer/cache") + } + + if err := os.MkdirAll(cacheDir, 0755); err != nil { + panic(fmt.Sprintf("failed to create cache directory %s: %v", cacheDir, err)) + } + + return cacheDir +} diff --git a/op-deployer/pkg/deployer/utils_test.go b/op-deployer/pkg/deployer/utils_test.go new file mode 100644 index 0000000000000..a4ff0d5e7efbf --- /dev/null +++ b/op-deployer/pkg/deployer/utils_test.go @@ -0,0 +1,12 @@ +package deployer + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestEnsureDefaultCacheDir(t *testing.T) { + cacheDir := EnsureDefaultCacheDir() + require.NotNil(t, cacheDir) +} diff --git a/op-deployer/pkg/deployer/verify/verifier.go b/op-deployer/pkg/deployer/verify/verifier.go index ec48b9d6918b6..69746ff607a32 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.GetDefaultCacheDir()) + artifactsFS, err := artifacts.Download(ctx, locator, nil, deployer.EnsureDefaultCacheDir()) if err != nil { return fmt.Errorf("failed to get artifacts: %w", err) }