1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-03-17 20:47:50 +02:00

fix: archive ids (#3052)

* fix: archive ids

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* test: add archive id filter test

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
This commit is contained in:
Carlos Alexandro Becker 2022-04-19 22:49:08 -03:00 committed by GitHub
parent 38bc6b504e
commit 922992ce76
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 15 deletions

View File

@ -74,11 +74,6 @@ func (Pipe) Default(ctx *context.Context) error {
archive.NameTemplate = defaultBinaryNameTemplate
}
}
if len(archive.Builds) == 0 {
for _, build := range ctx.Config.Builds {
archive.Builds = append(archive.Builds, build.ID)
}
}
ids.Inc(archive.ID)
}
return ids.Validate()
@ -89,15 +84,14 @@ func (Pipe) Run(ctx *context.Context) error {
g := semerrgroup.New(ctx.Parallelism)
for i, archive := range ctx.Config.Archives {
archive := archive
artifacts := ctx.Artifacts.Filter(
artifact.And(
artifact.Or(
artifact.ByType(artifact.Binary),
artifact.ByType(artifact.UniversalBinary),
),
artifact.ByIDs(archive.Builds...),
),
).GroupByPlatform()
filter := []artifact.Filter{artifact.Or(
artifact.ByType(artifact.Binary),
artifact.ByType(artifact.UniversalBinary),
)}
if len(archive.Builds) > 0 {
filter = append(filter, artifact.ByIDs(archive.Builds...))
}
artifacts := ctx.Artifacts.Filter(artifact.And(filter...)).GroupByPlatform()
if err := checkArtifacts(artifacts); err != nil && !archive.AllowDifferentBinaryCount {
return fmt.Errorf("invalid archive: %d: %w", i, ErrArchiveDifferentBinaryCount)
}

View File

@ -297,10 +297,23 @@ func TestRunPipeNoBinaries(t *testing.T) {
ctx := context.New(config.Project{
Dist: dist,
ProjectName: "foobar",
Archives: []config.Archive{{}},
Archives: []config.Archive{{
Builds: []string{"not-default"},
}},
})
ctx.Version = "0.0.1"
ctx.Git.CurrentTag = "v0.0.1"
ctx.Artifacts.Add(&artifact.Artifact{
Goos: "linux",
Goarch: "amd64",
Name: "bin/mybin",
Path: filepath.Join(dist, "linuxamd64", "bin", "mybin"),
Type: artifact.Binary,
Extra: map[string]interface{}{
artifact.ExtraBinary: "bin/mybin",
artifact.ExtraID: "default",
},
})
require.NoError(t, Pipe{}.Run(ctx))
}