feat: support service completion
All checks were successful
continuous-integration/drone/push Build is passing

Closes coop-cloud/organising#165.
This commit is contained in:
decentral1se 2021-09-16 09:10:05 +02:00
parent 6c9bb89a10
commit 6794236b77
No known key found for this signature in database
GPG Key ID: 5E2EF5A63E3718CC
2 changed files with 50 additions and 9 deletions

View File

@ -102,15 +102,24 @@ var appRunCommand = &cli.Command{
return nil return nil
}, },
BashComplete: func(c *cli.Context) { BashComplete: func(c *cli.Context) {
appNames, err := config.GetAppNames() switch c.NArg() {
if err != nil { case 0:
logrus.Warn(err) appNames, err := config.GetAppNames()
} if err != nil {
if c.NArg() > 0 { logrus.Warn(err)
return }
} for _, a := range appNames {
for _, a := range appNames { fmt.Println(a)
fmt.Println(a) }
case 1:
appName := c.Args().First()
serviceNames, err := config.GetAppServiceNames(appName)
if err != nil {
logrus.Warn(err)
}
for _, s := range serviceNames {
fmt.Println(s)
}
} }
}, },
} }

View File

@ -190,6 +190,38 @@ func GetApps(appFiles AppFiles) ([]App, error) {
return apps, nil return apps, nil
} }
// GetAppServiceNames retrieves a list of app service names.
func GetAppServiceNames(appName string) ([]string, error) {
var serviceNames []string
appFiles, err := LoadAppFiles("")
if err != nil {
return serviceNames, err
}
app, err := GetApp(appFiles, appName)
if err != nil {
return serviceNames, err
}
composeFiles, err := GetAppComposeFiles(app.Type, app.Env)
if err != nil {
return serviceNames, err
}
opts := stack.Deploy{Composefiles: composeFiles}
compose, err := GetAppComposeConfig(app.Type, opts, app.Env)
if err != nil {
return serviceNames, err
}
for _, service := range compose.Services {
serviceNames = append(serviceNames, service.Name)
}
return serviceNames, nil
}
// GetAppNames retrieves a list of app names. // GetAppNames retrieves a list of app names.
func GetAppNames() ([]string, error) { func GetAppNames() ([]string, error) {
var appNames []string var appNames []string