|
|
@@ -1,125 +0,0 @@
|
|
|
-package connect
|
|
|
-
|
|
|
-// import (
|
|
|
-// "context"
|
|
|
-// "fmt"
|
|
|
-// "strconv"
|
|
|
-// "time"
|
|
|
-
|
|
|
-// "github.com/porter-dev/porter/cli/cmd/api"
|
|
|
-// "github.com/porter-dev/porter/cli/cmd/utils"
|
|
|
-
|
|
|
-// ints "github.com/porter-dev/porter/internal/models/integrations"
|
|
|
-// )
|
|
|
-
|
|
|
-// // Actions creates a github actions integration
|
|
|
-// func Actions(
|
|
|
-// client *api.Client,
|
|
|
-// projectID uint,
|
|
|
-// ) error {
|
|
|
-// // if project ID is 0, ask the user to set the project ID or create a project
|
|
|
-// if projectID == 0 {
|
|
|
-// return fmt.Errorf("no project set, please run porter project set [id]")
|
|
|
-// }
|
|
|
-
|
|
|
-// // list oauth integrations and make sure Github exists
|
|
|
-// oauthInts, err := client.ListOAuthIntegrations(context.TODO(), projectID)
|
|
|
-
|
|
|
-// if err != nil {
|
|
|
-// return err
|
|
|
-// }
|
|
|
-
|
|
|
-// linkedGH := false
|
|
|
-
|
|
|
-// // iterate through oauth integrations to find do
|
|
|
-// for _, oauthInt := range oauthInts {
|
|
|
-// if oauthInt.Client == ints.OAuthGithub {
|
|
|
-// linkedGH = true
|
|
|
-// break
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// if !linkedGH {
|
|
|
-// _, err = triggerGithubOAuth(client, projectID)
|
|
|
-
|
|
|
-// if err != nil {
|
|
|
-// return err
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// gitRepos, err := client.ListGitRepos(context.TODO(), projectID)
|
|
|
-
|
|
|
-// gitRepoID := gitRepos[0].ID
|
|
|
-
|
|
|
-// // prompts (unfortunately a lot)
|
|
|
-// clusterIDStr, _ := utils.PromptPlaintext(fmt.Sprintf(`Please provide the cluster id (can be found with "porter clusters list").
|
|
|
-// Cluster ID: `))
|
|
|
-// clusterID, err := strconv.ParseUint(clusterIDStr, 10, 64)
|
|
|
-
|
|
|
-// if err != nil {
|
|
|
-// return err
|
|
|
-// }
|
|
|
-
|
|
|
-// releaseName, _ := utils.PromptPlaintext(fmt.Sprintf(`Release name:`))
|
|
|
-// releaseNamespace, _ := utils.PromptPlaintext(fmt.Sprintf(`Release namespace:`))
|
|
|
-// gitRepo, _ := utils.PromptPlaintext(fmt.Sprintf(`Please enter the Github repo, in the form ${owner}/${repo_name}. For example, porter-dev/porter.
|
|
|
-// Github repo:`))
|
|
|
-
|
|
|
-// imageRepo, _ := utils.PromptPlaintext(fmt.Sprintf(`Please enter the image repo url.
|
|
|
-// Image repo:`))
|
|
|
-
|
|
|
-// dockerfilePath, _ := utils.PromptPlaintext(fmt.Sprintf(`Please enter the path in the repo to your dockerfile.
|
|
|
-// Dockerfile path:`))
|
|
|
-
|
|
|
-// err = client.CreateGithubAction(
|
|
|
-// context.Background(),
|
|
|
-// projectID,
|
|
|
-// uint(clusterID),
|
|
|
-// releaseName,
|
|
|
-// releaseNamespace,
|
|
|
-// &api.CreateGithubActionRequest{
|
|
|
-// GitRepo: gitRepo,
|
|
|
-// ImageRepoURI: imageRepo,
|
|
|
-// DockerfilePath: dockerfilePath,
|
|
|
-// GitRepoID: gitRepoID,
|
|
|
-// },
|
|
|
-// )
|
|
|
-
|
|
|
-// return err
|
|
|
-// }
|
|
|
-
|
|
|
-// func triggerGithubOAuth(client *api.Client, projectID uint) (ints.OAuthIntegrationExternal, error) {
|
|
|
-// var ghAuth ints.OAuthIntegrationExternal
|
|
|
-
|
|
|
-// oauthURL := fmt.Sprintf("%s/oauth/projects/%d/github", client.BaseURL, projectID)
|
|
|
-
|
|
|
-// fmt.Printf("Please visit %s in your browser to connect to Github (it should open automatically).", oauthURL)
|
|
|
-// utils.OpenBrowser(oauthURL)
|
|
|
-
|
|
|
-// for {
|
|
|
-// oauthInts, err := client.ListOAuthIntegrations(context.TODO(), projectID)
|
|
|
-
|
|
|
-// if err != nil {
|
|
|
-// return ghAuth, err
|
|
|
-// }
|
|
|
-
|
|
|
-// linkedGH := false
|
|
|
-
|
|
|
-// // iterate through oauth integrations to find do
|
|
|
-// for _, oauthInt := range oauthInts {
|
|
|
-// if oauthInt.Client == ints.OAuthGithub {
|
|
|
-// linkedGH = true
|
|
|
-// ghAuth = oauthInt
|
|
|
-// break
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// if linkedGH {
|
|
|
-// break
|
|
|
-// }
|
|
|
-
|
|
|
-// time.Sleep(2 * time.Second)
|
|
|
-// }
|
|
|
-
|
|
|
-// return ghAuth, nil
|
|
|
-// }
|