diff --git a/pkg/java/java.go b/pkg/java/java.go index 77321fb7..b2aac6ad 100644 --- a/pkg/java/java.go +++ b/pkg/java/java.go @@ -81,6 +81,21 @@ func (o *Opts) download() error { log.Debugf("existing JDK '%s' is up-to-date", check.Locked.Source) return nil } + log.Infof("preparing new JDK at dir '%s'", o.jdkDir()) + if err = o.prepare(err); err != nil { + return err + } + if err := lock.Lock(); err != nil { + return err + } + log.Infof("prepared new JDK at dir '%s'", o.jdkDir()) + return nil +} + +func (o *Opts) prepare(err error) error { + if err := pathx.DeleteIfExists(o.jdkDir()); err != nil { + return err + } url := o.DownloadURL for search, replace := range o.DownloadURLReplacements { url = strings.ReplaceAll(url, search, replace) @@ -94,10 +109,6 @@ func (o *Opts) download() error { if _, err = filex.UnarchiveWithChanged(archiveFile, o.jdkDir()); err != nil { return err } - if err := lock.Lock(); err != nil { - return err - } - log.Infof("unarchived new JDK at dir '%s'", o.jdkDir()) return nil } diff --git a/pkg/oak_run.go b/pkg/oak_run.go index 034a1ac7..865bab9d 100644 --- a/pkg/oak_run.go +++ b/pkg/oak_run.go @@ -70,6 +70,9 @@ func (or OakRun) JarFile() string { } func (or OakRun) prepare() error { + if err := pathx.DeleteIfExists(or.Dir()); err != nil { + return err + } jarFile := or.JarFile() log.Infof("downloading Oak Run JAR from URL '%s' to file '%s'", or.DownloadURL, jarFile) if err := httpx.DownloadOnce(or.DownloadURL, jarFile); err != nil { diff --git a/pkg/sdk.go b/pkg/sdk.go index d78cf368..49da480d 100644 --- a/pkg/sdk.go +++ b/pkg/sdk.go @@ -67,16 +67,13 @@ func (s SDK) Prepare() error { } func (s SDK) prepare(zipFile string) error { - err := pathx.Delete(s.Dir()) - if err != nil { + if err := pathx.DeleteIfExists(s.Dir()); err != nil { return err } - err = s.unpackSdk(zipFile) - if err != nil { + if err := s.unpackSdk(zipFile); err != nil { return err } - err = s.unpackDispatcher() - if err != nil { + if err := s.unpackDispatcher(); err != nil { return err } return nil diff --git a/pkg/vault_cli.go b/pkg/vault_cli.go index 8969fe42..51ece711 100644 --- a/pkg/vault_cli.go +++ b/pkg/vault_cli.go @@ -49,7 +49,7 @@ func (v VaultCli) lock() osx.Lock[VaultCliLock] { return osx.NewLock(v.dir()+"/lock/create.yml", func() (VaultCliLock, error) { return VaultCliLock{DownloadURL: v.DownloadURL}, nil }) } -func (v VaultCli) prepare() error { +func (v VaultCli) Prepare() error { lock := v.lock() check, err := lock.State() if err != nil { @@ -60,7 +60,7 @@ func (v VaultCli) prepare() error { return nil } log.Infof("preparing new Vault '%s'", v.DownloadURL) - err = v.install() + err = v.prepare() if err != nil { return err } @@ -77,7 +77,10 @@ func (v VaultCli) archiveFile() string { return pathx.Canonical(fmt.Sprintf("%s/%s", v.dir(), filepath.Base(v.DownloadURL))) } -func (v VaultCli) install() error { +func (v VaultCli) prepare() error { + if err := pathx.DeleteIfExists(v.dir()); err != nil { + return err + } archiveFile := v.archiveFile() log.Infof("downloading Vault from URL '%s' to file '%s'", v.DownloadURL, archiveFile) if err := httpx.DownloadOnce(v.DownloadURL, archiveFile); err != nil { @@ -94,8 +97,8 @@ func (v VaultCli) install() error { } func (v VaultCli) CommandShell(args []string) error { - if err := v.prepare(); err != nil { - return fmt.Errorf("cannot run Vault command: %w", err) + if err := v.Prepare(); err != nil { + return fmt.Errorf("cannot prepare Vault before running command: %w", err) } cmd := execx.CommandShell(args) cmd.Dir = v.execDir()