extractRegionFromGitRemote returns region name from a Git remote URL only if the region is a valid Scalingo region, returns an empty string othervise
(ctx context.Context, url string, rc *config.RegionsCache)
| 46 | // extractRegionFromGitRemote returns region name from a Git remote URL |
| 47 | // only if the region is a valid Scalingo region, returns an empty string othervise |
| 48 | func extractRegionFromGitRemote(ctx context.Context, url string, rc *config.RegionsCache) (string, error) { |
| 49 | // Extract url part from the git remote |
| 50 | // e.g.: git@ssh.osc-fr1.scalingo.com:app-name.git -> ssh.osc-fr1.scalingo.com |
| 51 | r := regexp.MustCompile(`git@(.*)\:.*`) |
| 52 | matches := r.FindStringSubmatch(url) |
| 53 | if len(matches) > 0 { |
| 54 | for _, region := range rc.Regions { |
| 55 | if matches[1] == strings.Split(region.SSH, ":")[0] { |
| 56 | return region.Name, nil |
| 57 | } |
| 58 | } |
| 59 | return "", errors.Newf(ctx, "[detect] no valid region could be found in the Git remote") |
| 60 | } |
| 61 | return "", errors.Newf(ctx, "[detect] could not extract URL from Git remote") |
| 62 | } |
no outgoing calls