func createProject()

in tui/post_processors.go [66:115]


func createProject(projectID string, q *Queue) tea.Cmd {
	return func() tea.Msg {

		currentProjectID := q.Get("currentProject").(string)

		if currentProjectID == "" {
			tmp, err := q.client.ProjectList()
			if err != nil || len(tmp) == 0 || tmp[0].ID == "" {
				return errMsg{err: fmt.Errorf("createProject: could not determine an alternate project for parent detection: %w ", err)}
			}
			currentProjectID = tmp[0].ID
		}

		parent, err := q.client.ProjectParentGet(currentProjectID)
		if err != nil {
			return errMsg{err: fmt.Errorf("createProject: could not determine proper parent for project: %w ", err)}
		}

		if err := q.client.ProjectCreate(projectID, parent.Id, parent.Type); err != nil {
			return errMsg{err: fmt.Errorf("createProject: could not create project: %w", err)}
		}

		if err := q.client.ServiceEnable(projectID, gcloud.ServiceUsage); err != nil {
			return errMsg{err: fmt.Errorf("createProject: could not enable service: %w", err)}
		}

		if errMsg := handleProjectNumber(projectID, q); errMsg != nil {
			return errMsg
		}
		if err := q.client.ProjectIDSet(projectID); err != nil {
			return errMsg{err: err}
		}

		qmod := q.Model("region")
		if qmod != nil {
			r := qmod.(*picker)
			r.querySlowText = "Getting regions can take a little extra time if this is a new project"
		}

		qmod = q.Model("zone")
		if qmod != nil {
			z := qmod.(*picker)
			z.querySlowText = "Getting zones can take a little extra time if this is a new project"
		}

		q.Save("currentProject", projectID)

		return successMsg{}
	}
}