diff --git a/cli/app/new.go b/cli/app/new.go index b64aebef..07dd7fc2 100644 --- a/cli/app/new.go +++ b/cli/app/new.go @@ -107,11 +107,11 @@ func ensureDomainFlag() error { // ensureServerFlag checks if the server flag was used. if not, asks the user for it. func ensureServerFlag() error { - appFiles, err := config.LoadAppFiles(newAppServer) + servers, err := config.GetServers() if err != nil { return err } - servers := appFiles.GetServers() + if newAppServer == "" { prompt := &survey.Select{ Message: "Select app server:", @@ -121,6 +121,7 @@ func ensureServerFlag() error { return err } } + return nil } diff --git a/pkg/config/app.go b/pkg/config/app.go index dddab3c2..97f954e5 100644 --- a/pkg/config/app.go +++ b/pkg/config/app.go @@ -273,13 +273,18 @@ func SanitiseAppName(name string) string { // GetAppStatuses queries servers to check the deployment status of given apps func GetAppStatuses(appFiles AppFiles) (map[string]string, error) { - servers := appFiles.GetServers() + statuses := map[string]string{} + + servers, err := GetServers() + if err != nil { + return statuses, err + } + ch := make(chan stack.StackStatus, len(servers)) for _, server := range servers { go func(s string) { ch <- stack.GetAllDeployedServices(s) }(server) } - statuses := map[string]string{} for range servers { status := <-ch for _, service := range status.Services { diff --git a/pkg/config/env.go b/pkg/config/env.go index 8550c769..8668fd78 100644 --- a/pkg/config/env.go +++ b/pkg/config/env.go @@ -21,20 +21,17 @@ var APPS_DIR = path.Join(ABRA_DIR, "apps") var REPOS_BASE_URL = "https://git.coopcloud.tech/coop-cloud" // GetServers retrieves all servers. -func (a AppFiles) GetServers() []string { - var unique []string +func GetServers() ([]string, error) { + var servers []string - servers := make(map[string]struct{}) - for _, appFile := range a { - if _, ok := servers[appFile.Server]; !ok { - servers[appFile.Server] = struct{}{} - unique = append(unique, appFile.Server) - } + servers, err := getAllFoldersInDirectory(ABRA_SERVER_FOLDER) + if err != nil { + return servers, err } - logrus.Debugf("retrieved servers: '%s'", unique) + logrus.Debugf("retrieved '%v' servers: '%s'", len(servers), servers) - return unique + return servers, nil } // ReadEnv loads an app envivornment into a map.