parent
d4a42d8378
commit
a694c8c20e
|
@ -23,12 +23,12 @@ var statusFlag = &cli.BoolFlag{
|
||||||
Destination: &status,
|
Destination: &status,
|
||||||
}
|
}
|
||||||
|
|
||||||
var appRecipe string
|
var recipeFilter string
|
||||||
var recipeFlag = &cli.StringFlag{
|
var recipeFlag = &cli.StringFlag{
|
||||||
Name: "recipe, r",
|
Name: "recipe, r",
|
||||||
Value: "",
|
Value: "",
|
||||||
Usage: "Show apps of a specific recipe",
|
Usage: "Show apps of a specific recipe",
|
||||||
Destination: &appRecipe,
|
Destination: &recipeFilter,
|
||||||
}
|
}
|
||||||
|
|
||||||
var listAppServer string
|
var listAppServer string
|
||||||
|
@ -84,7 +84,7 @@ can take some time.
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
apps, err := config.GetApps(appFiles)
|
apps, err := config.GetApps(appFiles, recipeFilter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -104,7 +104,7 @@ can take some time.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
statuses, err = config.GetAppStatuses(appFiles, internal.MachineReadable)
|
statuses, err = config.GetAppStatuses(apps, internal.MachineReadable)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -124,14 +124,14 @@ can take some time.
|
||||||
var ok bool
|
var ok bool
|
||||||
if stats, ok = allStats[app.Server]; !ok {
|
if stats, ok = allStats[app.Server]; !ok {
|
||||||
stats = serverStatus{}
|
stats = serverStatus{}
|
||||||
if appRecipe == "" {
|
if recipeFilter == "" {
|
||||||
// count server, no filtering
|
// count server, no filtering
|
||||||
totalServersCount++
|
totalServersCount++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if app.Recipe == appRecipe || appRecipe == "" {
|
if app.Recipe == recipeFilter || recipeFilter == "" {
|
||||||
if appRecipe != "" {
|
if recipeFilter != "" {
|
||||||
// only count server if matches filter
|
// only count server if matches filter
|
||||||
totalServersCount++
|
totalServersCount++
|
||||||
}
|
}
|
||||||
|
|
|
@ -185,7 +185,7 @@ func newApp(env AppEnv, name string, appFile AppFile) (App, error) {
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadAppFiles gets all app files for a given set of servers or all servers
|
// LoadAppFiles gets all app files for a given set of servers or all servers.
|
||||||
func LoadAppFiles(servers ...string) (AppFiles, error) {
|
func LoadAppFiles(servers ...string) (AppFiles, error) {
|
||||||
appFiles := make(AppFiles)
|
appFiles := make(AppFiles)
|
||||||
if len(servers) == 1 {
|
if len(servers) == 1 {
|
||||||
|
@ -194,7 +194,7 @@ func LoadAppFiles(servers ...string) (AppFiles, error) {
|
||||||
var err error
|
var err error
|
||||||
servers, err = GetAllFoldersInDirectory(SERVERS_DIR)
|
servers, err = GetAllFoldersInDirectory(SERVERS_DIR)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return appFiles, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -205,8 +205,9 @@ func LoadAppFiles(servers ...string) (AppFiles, error) {
|
||||||
serverDir := path.Join(SERVERS_DIR, server)
|
serverDir := path.Join(SERVERS_DIR, server)
|
||||||
files, err := getAllFilesInDirectory(serverDir)
|
files, err := getAllFilesInDirectory(serverDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("server %s doesn't exist? Run \"abra server ls\" to check", server)
|
return appFiles, fmt.Errorf("server %s doesn't exist? Run \"abra server ls\" to check", server)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, file := range files {
|
for _, file := range files {
|
||||||
appName := strings.TrimSuffix(file.Name(), ".env")
|
appName := strings.TrimSuffix(file.Name(), ".env")
|
||||||
appFilePath := path.Join(SERVERS_DIR, server, file.Name())
|
appFilePath := path.Join(SERVERS_DIR, server, file.Name())
|
||||||
|
@ -216,12 +217,13 @@ func LoadAppFiles(servers ...string) (AppFiles, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return appFiles, nil
|
return appFiles, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetApp loads an apps settings, reading it from file, in preparation to use it
|
// GetApp loads an apps settings, reading it from file, in preparation to use
|
||||||
//
|
// it. It should only be used when ready to use the env file to keep IO
|
||||||
// ONLY use when ready to use the env file to keep IO down
|
// operations down.
|
||||||
func GetApp(apps AppFiles, name AppName) (App, error) {
|
func GetApp(apps AppFiles, name AppName) (App, error) {
|
||||||
appFile, exists := apps[name]
|
appFile, exists := apps[name]
|
||||||
if !exists {
|
if !exists {
|
||||||
|
@ -236,8 +238,9 @@ func GetApp(apps AppFiles, name AppName) (App, error) {
|
||||||
return app, nil
|
return app, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetApps returns a slice of Apps with their env files read from a given slice of AppFiles
|
// GetApps returns a slice of Apps with their env files read from a given
|
||||||
func GetApps(appFiles AppFiles) ([]App, error) {
|
// slice of AppFiles.
|
||||||
|
func GetApps(appFiles AppFiles, recipeFilter string) ([]App, error) {
|
||||||
var apps []App
|
var apps []App
|
||||||
|
|
||||||
for name := range appFiles {
|
for name := range appFiles {
|
||||||
|
@ -245,7 +248,14 @@ func GetApps(appFiles AppFiles) ([]App, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
apps = append(apps, app)
|
|
||||||
|
if recipeFilter != "" {
|
||||||
|
if app.Recipe == recipeFilter {
|
||||||
|
apps = append(apps, app)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
apps = append(apps, app)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return apps, nil
|
return apps, nil
|
||||||
|
@ -292,7 +302,7 @@ func GetAppNames() ([]string, error) {
|
||||||
return appNames, err
|
return appNames, err
|
||||||
}
|
}
|
||||||
|
|
||||||
apps, err := GetApps(appFiles)
|
apps, err := GetApps(appFiles, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return appNames, err
|
return appNames, err
|
||||||
}
|
}
|
||||||
|
@ -304,7 +314,8 @@ func GetAppNames() ([]string, error) {
|
||||||
return appNames, nil
|
return appNames, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// TemplateAppEnvSample copies the example env file for the app into the users env files
|
// TemplateAppEnvSample copies the example env file for the app into the users
|
||||||
|
// env files.
|
||||||
func TemplateAppEnvSample(recipeName, appName, server, domain string) error {
|
func TemplateAppEnvSample(recipeName, appName, server, domain string) error {
|
||||||
envSamplePath := path.Join(RECIPES_DIR, recipeName, ".env.sample")
|
envSamplePath := path.Join(RECIPES_DIR, recipeName, ".env.sample")
|
||||||
envSample, err := ioutil.ReadFile(envSamplePath)
|
envSample, err := ioutil.ReadFile(envSamplePath)
|
||||||
|
@ -339,21 +350,20 @@ func TemplateAppEnvSample(recipeName, appName, server, domain string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SanitiseAppName makes a app name usable with Docker by replacing illegal characters
|
// SanitiseAppName makes a app name usable with Docker by replacing illegal
|
||||||
|
// characters.
|
||||||
func SanitiseAppName(name string) string {
|
func SanitiseAppName(name string) string {
|
||||||
return strings.ReplaceAll(name, ".", "_")
|
return strings.ReplaceAll(name, ".", "_")
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetAppStatuses queries servers to check the deployment status of given apps
|
// GetAppStatuses queries servers to check the deployment status of given apps.
|
||||||
func GetAppStatuses(appFiles AppFiles, MachineReadable bool) (map[string]map[string]string, error) {
|
func GetAppStatuses(apps []App, MachineReadable bool) (map[string]map[string]string, error) {
|
||||||
statuses := make(map[string]map[string]string)
|
statuses := make(map[string]map[string]string)
|
||||||
|
|
||||||
var unique []string
|
|
||||||
servers := make(map[string]struct{})
|
servers := make(map[string]struct{})
|
||||||
for _, appFile := range appFiles {
|
for _, app := range apps {
|
||||||
if _, ok := servers[appFile.Server]; !ok {
|
if _, ok := servers[app.Server]; !ok {
|
||||||
servers[appFile.Server] = struct{}{}
|
servers[app.Server] = struct{}{}
|
||||||
unique = append(unique, appFile.Server)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,6 +372,7 @@ func GetAppStatuses(appFiles AppFiles, MachineReadable bool) (map[string]map[str
|
||||||
if !MachineReadable {
|
if !MachineReadable {
|
||||||
bar = formatter.CreateProgressbar(len(servers), "querying remote servers...")
|
bar = formatter.CreateProgressbar(len(servers), "querying remote servers...")
|
||||||
}
|
}
|
||||||
|
|
||||||
ch := make(chan stack.StackStatus, len(servers))
|
ch := make(chan stack.StackStatus, len(servers))
|
||||||
for server := range servers {
|
for server := range servers {
|
||||||
go func(s string) {
|
go func(s string) {
|
||||||
|
|
Loading…
Reference in New Issue