in internal/policygen/iam.go [278:298]
func projectNumber(rn runner.Runner, id string) (string, error) {
cmd := exec.Command("gcloud", "projects", "describe", id, "--format", "json")
out, err := rn.CmdOutput(cmd)
if err != nil {
return "", fmt.Errorf("failed to get project number for project %q: %v", id, err)
}
var p struct {
ProjectNumber string `json:"projectNumber"`
}
if err := json.Unmarshal(out, &p); err != nil {
return "", fmt.Errorf("failed to parse project number from gcloud output: %v", err)
}
if p.ProjectNumber == "" {
return "", fmt.Errorf("project number is empty")
}
return p.ProjectNumber, nil
}