You've already forked goreleaser
mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-11-29 23:07:42 +02:00
fix: decouple project_name guessing from the release pipe (#4335)
the release's defaults run before the project's does, so, usually the github/gitlab/gitea names are set. however, in some cases, the release's defaults might be skipped, in which case they'll be empty. this breaks things like `goreleaser changelog`, especially on non-go repositories. this pr tries to extract the project name from the git remote url in the project's defaulter. it might be possible now to move it to run before the release defaulter, even. --------- Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
95c990b166
commit
3cfefcc4ce
@@ -6,6 +6,7 @@ import (
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
"github.com/goreleaser/goreleaser/internal/git"
|
||||
"github.com/goreleaser/goreleaser/pkg/context"
|
||||
)
|
||||
|
||||
@@ -27,6 +28,7 @@ func (Pipe) Default(ctx *context.Context) error {
|
||||
ctx.Config.Release.GitLab.Name,
|
||||
ctx.Config.Release.Gitea.Name,
|
||||
moduleName(),
|
||||
gitRemote(ctx),
|
||||
} {
|
||||
if candidate == "" {
|
||||
continue
|
||||
@@ -55,3 +57,14 @@ func moduleName() string {
|
||||
parts := strings.Split(mod, "/")
|
||||
return strings.TrimSpace(parts[len(parts)-1])
|
||||
}
|
||||
|
||||
func gitRemote(ctx *context.Context) string {
|
||||
repo, err := git.ExtractRepoFromConfig(ctx)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
if err := repo.CheckSCM(); err != nil {
|
||||
return ""
|
||||
}
|
||||
return repo.Name
|
||||
}
|
||||
|
||||
@@ -76,6 +76,23 @@ func TestEmptyProjectName_DefaultsToGoModPath(t *testing.T) {
|
||||
require.Equal(t, "bar", ctx.Config.ProjectName)
|
||||
}
|
||||
|
||||
func TestEmptyProjectName_DefaultsToGitURL(t *testing.T) {
|
||||
_ = testlib.Mktmp(t)
|
||||
ctx := testctx.New()
|
||||
testlib.GitInit(t)
|
||||
testlib.GitRemoteAdd(t, "git@github.com:foo/bar.git")
|
||||
require.NoError(t, Pipe{}.Default(ctx))
|
||||
require.Equal(t, "bar", ctx.Config.ProjectName)
|
||||
}
|
||||
|
||||
func TestEmptyProjectName_DefaultsToNonSCMGitURL(t *testing.T) {
|
||||
_ = testlib.Mktmp(t)
|
||||
ctx := testctx.New()
|
||||
testlib.GitInit(t)
|
||||
testlib.GitRemoteAdd(t, "git@myhost.local:bar.git")
|
||||
require.EqualError(t, Pipe{}.Default(ctx), "couldn't guess project_name, please add it to your config")
|
||||
}
|
||||
|
||||
func TestEmptyProjectNameAndRelease(t *testing.T) {
|
||||
_ = testlib.Mktmp(t)
|
||||
ctx := testctx.NewWithCfg(config.Project{
|
||||
|
||||
Reference in New Issue
Block a user