func()

in pkg/gitprovider/github.go [250:290]


func (c *GitHubClient) CreateProject(
	ctx context.Context,
	githubURL,
	token,
	projectID string,
) error {
	c.restyClient.HostURL = githubURL
	path := "user/repos"

	owner, repo, err := parseProjectID(projectID)
	if err != nil {
		return err
	}

	isOrg, err := c.isOwnerOrg(ctx, githubURL, token, owner)
	if err != nil {
		return err
	}

	if isOrg {
		path = fmt.Sprintf("orgs/%v/repos", owner)
	}

	resp, err := c.restyClient.
		R().
		SetContext(ctx).
		SetAuthToken(token).
		SetBody(map[string]string{
			"name": repo,
		}).
		Post(path)
	if err != nil {
		return fmt.Errorf("failed to create GitHub repository: %w", err)
	}

	if resp.IsError() {
		return fmt.Errorf("failed to create GitHub repository: %s", resp.String())
	}

	return nil
}