mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-01-06 03:13:48 +02:00
65ffbf1921
* refactor: remove pkg/errors Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com> * refactor: remove pkg/errors Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package git
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/goreleaser/goreleaser/pkg/config"
|
|
)
|
|
|
|
// ExtractRepoFromConfig gets the repo name from the Git config.
|
|
func ExtractRepoFromConfig() (result config.Repo, err error) {
|
|
if !IsRepo() {
|
|
return result, errors.New("current folder is not a git repository")
|
|
}
|
|
out, err := Run("config", "--get", "remote.origin.url")
|
|
if err != nil {
|
|
return result, fmt.Errorf("repository doesn't have an `origin` remote")
|
|
}
|
|
return ExtractRepoFromURL(out), nil
|
|
}
|
|
|
|
func ExtractRepoFromURL(s string) config.Repo {
|
|
// removes the .git suffix and any new lines
|
|
s = strings.NewReplacer(
|
|
".git", "",
|
|
"\n", "",
|
|
).Replace(s)
|
|
// if the URL contains a :, indicating a SSH config,
|
|
// remove all chars until it, including itself
|
|
// on HTTP and HTTPS URLs it will remove the http(s): prefix,
|
|
// which is ok. On SSH URLs the whole user@server will be removed,
|
|
// which is required.
|
|
s = s[strings.LastIndex(s, ":")+1:]
|
|
// split by /, the last to parts should be the owner and name
|
|
ss := strings.Split(s, "/")
|
|
return config.Repo{
|
|
Owner: ss[len(ss)-2],
|
|
Name: ss[len(ss)-1],
|
|
}
|
|
}
|