github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/runners/clean/run.go (about) 1 package clean 2 3 import ( 4 "os" 5 6 "github.com/ActiveState/cli/internal/errs" 7 "github.com/ActiveState/cli/internal/fileutils" 8 "github.com/ActiveState/cli/internal/locale" 9 "github.com/ActiveState/cli/internal/osutils" 10 "github.com/ActiveState/cli/internal/runners/prepare" 11 "github.com/ActiveState/cli/internal/subshell" 12 "github.com/ActiveState/cli/internal/subshell/sscommon" 13 ) 14 15 func removeCache(cachePath string) error { 16 err := os.RemoveAll(cachePath) 17 if err != nil { 18 if osutils.IsAccessDeniedError(err) { 19 return locale.WrapExternalError(err, "err_remove_cache") 20 } 21 return locale.WrapError(err, "err_remove_cache") 22 } 23 return nil 24 } 25 26 func undoPrepare() error { 27 err := prepare.CleanOS() 28 if err != nil { 29 return locale.WrapError(err, "err_prepare_clean", "Could not perform OS-specific cleanup") 30 } 31 32 toRemove, err := prepare.InstalledPreparedFiles() 33 if err != nil { 34 return locale.WrapError(err, "err_prepared_files", "Could not determine files to remove") 35 } 36 37 var aggErr error 38 for _, f := range toRemove { 39 if fileutils.TargetExists(f) { 40 err := os.RemoveAll(f) 41 if err != nil { 42 aggErr = locale.WrapError(aggErr, "err_undo_prepare_remove_file", "Failed to remove file {{.V0}}", f) 43 } 44 } 45 } 46 47 return aggErr 48 } 49 50 func removeEnvPaths(cfg configurable) error { 51 isAdmin, err := osutils.IsAdmin() 52 if err != nil { 53 return errs.Wrap(err, "Could not determine if running as Windows administrator") 54 } 55 56 // remove shell file additions 57 s := subshell.New(cfg) 58 if err := s.CleanUserEnv(cfg, sscommon.InstallID, !isAdmin); err != nil { 59 return errs.Wrap(err, "Failed to remove State Tool installation PATH") 60 } 61 // Default projects will stop working, so we return them from the PATH as well 62 if err := s.CleanUserEnv(cfg, sscommon.DefaultID, !isAdmin); err != nil { 63 return errs.Wrap(err, "Failed to remove project directory from PATH") 64 } 65 66 if err := s.RemoveLegacyInstallPath(cfg); err != nil { 67 return errs.Wrap(err, "Failed to remove legacy install path") 68 } 69 70 return nil 71 }