func fillSetUpConfig()

in cmd/setupgh.go [77:150]


func fillSetUpConfig(sc *providers.SetUpCmd, gh providers.GhClient, az providers.AzClientInterface) error {
	if sc.TenantId == "" {
		tenandId, err := providers.PromptTenantId(sc.AzClient, context.Background())
		if err != nil {
			return fmt.Errorf("prompting tenant ID: %w", err)
		}
		sc.TenantId = tenandId
	}

	if sc.AppName == "" {
		// Set the application name; default is the current directory name plus "-workflow".

		// get the current directory name
		currentDir, err := os.Getwd()
		if err != nil {
			return fmt.Errorf("getting current directory: %w", err)
		}
		defaultAppName := fmt.Sprintf("%s-workflow", filepath.Base(currentDir))
		defaultAppName, err = ToValidAppName(defaultAppName)
		if err != nil {
			log.Debugf("unable to convert default app name %q to a valid name: %v", defaultAppName, err)
			log.Debugf("using default app name %q", defaultAppName)
			defaultAppName = "my-workflow"
		}

		appName, err := PromptAppName(sc.AzClient, defaultAppName)
		if err != nil {
			return fmt.Errorf("prompting app name: %w", err)
		}
		sc.AppName = appName
	}

	if sc.SubscriptionID == "" {
		if strings.ToLower(sc.Provider) == "azure" {
			currentSub, err := az.GetCurrentAzSubscriptionLabel()
			if err != nil {
				return fmt.Errorf("getting current subscription ID: %w", err)
			}

			subLabels, err := az.GetAzSubscriptionLabels()
			if err != nil {
				return fmt.Errorf("getting subscription labels: %w", err)
			}

			sc.SubscriptionID, err = getAzSubscriptionId(subLabels, currentSub)
			if err != nil {
				return fmt.Errorf("getting subscription ID: %w", err)
			}
		} else {
			sc.SubscriptionID = getSubscriptionID()
		}
	}

	if sc.ResourceGroupName == "" {
		rg, err := PromptResourceGroup(sc.AzClient, sc.SubscriptionID)
		if err != nil {
			return fmt.Errorf("getting resource group: %w", err)
		}
		sc.ResourceGroupName = *rg.Name
	}

	if sc.Repo == "" {
		repo, err := PromptGitHubRepoWithOwner(gh)
		if err != nil {
			return fmt.Errorf("failed to prompt for GitHub repository: %w", err)
		}
		if repo == "" {
			return errors.New("github repo cannot be empty")
		}
		sc.Repo = repo
	}

	return nil
}