From 27e0708ac7661685e728ff9213104de50554f562 Mon Sep 17 00:00:00 2001 From: decentral1se Date: Mon, 23 Jan 2023 13:56:27 +0100 Subject: [PATCH] fix: don't delete server dir on cleanup if not empty Part of https://git.coopcloud.tech/coop-cloud/organising/issues/325. --- cli/server/add.go | 14 +++++++++++++- pkg/config/app.go | 2 +- pkg/config/env.go | 4 ++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/cli/server/add.go b/cli/server/add.go index af0b5e3f..59be899c 100644 --- a/cli/server/add.go +++ b/cli/server/add.go @@ -80,7 +80,19 @@ func cleanUp(domainName string) { } logrus.Warnf("cleaning up server directory for %s", domainName) - if err := os.RemoveAll(filepath.Join(config.SERVERS_DIR, domainName)); err != nil { + + serverDir := filepath.Join(config.SERVERS_DIR, domainName) + files, err := config.GetAllFilesInDirectory(serverDir) + if err != nil { + logrus.Fatalf("unable to list files in %s: %s", serverDir, err) + } + + if len(files) > 0 { + logrus.Warnf("aborting clean up of %s because it is not empty", serverDir) + return + } + + if err := os.RemoveAll(serverDir); err != nil { logrus.Fatal(err) } } diff --git a/pkg/config/app.go b/pkg/config/app.go index 46717572..17af55c4 100644 --- a/pkg/config/app.go +++ b/pkg/config/app.go @@ -203,7 +203,7 @@ func LoadAppFiles(servers ...string) (AppFiles, error) { for _, server := range servers { serverDir := path.Join(SERVERS_DIR, server) - files, err := getAllFilesInDirectory(serverDir) + files, err := GetAllFilesInDirectory(serverDir) if err != nil { return appFiles, fmt.Errorf("server %s doesn't exist? Run \"abra server ls\" to check", server) } diff --git a/pkg/config/env.go b/pkg/config/env.go index 44e16efb..e799f58b 100644 --- a/pkg/config/env.go +++ b/pkg/config/env.go @@ -66,8 +66,8 @@ func ReadServerNames() ([]string, error) { return serverNames, nil } -// getAllFilesInDirectory returns filenames of all files in directory -func getAllFilesInDirectory(directory string) ([]fs.FileInfo, error) { +// GetAllFilesInDirectory returns filenames of all files in directory +func GetAllFilesInDirectory(directory string) ([]fs.FileInfo, error) { var realFiles []fs.FileInfo files, err := ioutil.ReadDir(directory)