package app import ( "cnb.cool/cnb/go-cnb/cnb" "cnb.cool/looc/git-cnb/git" "cnb.cool/looc/git-cnb/ui" "errors" "fmt" "os" "regexp" ) var Client *cnb.Client var Repo string func init() { gitRemoteURL, err := git.Remote() if err != nil { ui.Error(err.Error()) os.Exit(0) } domain, repo, err := parseGitRemoteUrl(gitRemoteURL) if err != nil { ui.Error(err.Error()) os.Exit(0) } baseURL := fmt.Sprintf("https://api.%s/", domain) Repo = repo Client, err = cnb.NewClient(nil).WithAuthToken(getToken()).WithURLs(baseURL) if err != nil { ui.Error(err.Error()) os.Exit(0) } } func parseGitRemoteUrl(gitRemoteURL string) (string, string, error) { re := regexp.MustCompile(`^https?://([^/]+)/(.+?)(?:\.git)?$`) matches := re.FindStringSubmatch(gitRemoteURL) if len(matches) == 3 { domain := matches[1] repo := matches[2] return domain, repo, nil } return "", "", errors.New("git remote url is not a valid cnb url") } func getToken() string { return os.Getenv("CNB_TOKEN") }