func listProjects()

in cmd/cloudshell_open/project.go [37:55]


func listProjects() ([]string, error) {
	client, err := cloudresourcemanager.NewService(context.TODO())
	if err != nil {
		return nil, fmt.Errorf("failed to initialize cloudresourcemanager client: %w", err)
	}
	var out []string
	if err := client.Projects.List().PageSize(1000).Pages(context.TODO(), func(resp *cloudresourcemanager.ListProjectsResponse) error {
		for _, p := range resp.Projects {
			if p.LifecycleState == "ACTIVE" {
				out = append(out, p.ProjectId)
			}
		}
		return nil
	}); err != nil {
		return nil, fmt.Errorf("failed to list GCP projects: %w", err)
	}
	sort.Strings(out)
	return out, nil
}