func projectNumber()

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
}