in providers/heroku/app.go [54:146]
func (g *AppGenerator) InitResources() error {
svc := g.generateService()
ctx := context.Background()
team := g.GetArgs()["team"].(string)
var output []heroku.App
var hasRequiredFilter bool
if len(g.Filter) > 0 {
for _, filter := range g.Filter {
if filter.IsApplicable("app") {
hasRequiredFilter = true
for _, appID := range filter.AcceptableValues {
app, err := svc.AppInfo(ctx, appID)
if err != nil {
return fmt.Errorf("Error filtering apps by app '%s': %w", appID, err)
}
output = append(output, *app)
}
}
}
}
if team != "" {
hasRequiredFilter = true
teamApps, err := svc.TeamAppListByTeam(ctx, team, &heroku.ListRange{Field: "id", Max: 1000})
if err != nil {
return fmt.Errorf("Error querying apps by team '%s': %w", team, err)
}
for _, app := range teamApps {
output = append(output, heroku.App{ID: app.ID, Name: app.Name})
}
}
if !hasRequiredFilter {
return fmt.Errorf("Heroku Apps must be scoped by team or filtered by app: --team=<name> or --filter=app=<ID>")
}
resources, err := g.createResources(output)
if err != nil {
return fmt.Errorf("Error creating app resources: %w", err)
}
g.Resources = resources
for _, app := range output {
appFeatures, err := g.createAppFeatureResources(ctx, svc, app)
if err != nil {
return fmt.Errorf("Error creating app feature resources: %w", err)
}
g.Resources = append(g.Resources, appFeatures...)
addons, err := g.createAddonResources(ctx, svc, app)
if err != nil {
return fmt.Errorf("Error creating app addon resources: %w", err)
}
g.Resources = append(g.Resources, addons...)
addonAttachments, err := g.createAddonAttachmentResources(ctx, svc, app)
if err != nil {
return fmt.Errorf("Error creating app addon attachment resources: %w", err)
}
g.Resources = append(g.Resources, addonAttachments...)
appWebooks, err := g.createAppWebhookResources(ctx, svc, app)
if err != nil {
return fmt.Errorf("Error creating app webhook resources: %w", err)
}
g.Resources = append(g.Resources, appWebooks...)
ssls, err := g.createSslResources(ctx, svc, app)
if err != nil {
return fmt.Errorf("Error creating SSL resources: %w", err)
}
g.Resources = append(g.Resources, ssls...)
domains, err := g.createDomainResources(ctx, svc, app)
if err != nil {
return fmt.Errorf("Error creating domain resources: %w", err)
}
g.Resources = append(g.Resources, domains...)
drains := g.createDrainResources(ctx, svc, app)
g.Resources = append(g.Resources, drains...)
formations, err := g.createFormationResources(ctx, svc, app)
if err != nil {
return fmt.Errorf("Error creating formation resources: %w", err)
}
g.Resources = append(g.Resources, formations...)
}
return nil
}