You've already forked goreleaser
							
							
				mirror of
				https://github.com/goreleaser/goreleaser.git
				synced 2025-10-30 23:58:09 +02:00 
			
		
		
		
	feat: Scoop pipe - Write the manifest before skips, like Brew pipe. (#2241)
* feat: Scoop pipe - Write the manifest before skips, like Brew pipe. feat: Scoop pipe - Added tests and fixed the write path of the manifest. * Update scoop.go Co-authored-by: eolder <eolder@rajant.com> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
		| @@ -5,6 +5,8 @@ import ( | ||||
| 	"bytes" | ||||
| 	"encoding/json" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"strings" | ||||
|  | ||||
| @@ -106,12 +108,18 @@ func doRun(ctx *context.Context, cl client.Client) error { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	if ctx.SkipPublish { | ||||
| 		return pipe.ErrSkipPublishEnabled | ||||
| 	filename := filepath.Join(ctx.Config.Dist, path) | ||||
| 	log.WithField("manifest", filename).Info("writing") | ||||
| 	if err := os.WriteFile(filename, content.Bytes(), 0o644); err != nil { | ||||
| 		return fmt.Errorf("failed to write scoop manifest: %w", err) | ||||
| 	} | ||||
|  | ||||
| 	if strings.TrimSpace(scoop.SkipUpload) == "true" { | ||||
| 		return pipe.Skip("scoop.skip_upload is true") | ||||
| 	} | ||||
| 	if ctx.SkipPublish { | ||||
| 		return pipe.ErrSkipPublishEnabled | ||||
| 	} | ||||
| 	if strings.TrimSpace(scoop.SkipUpload) == "auto" && ctx.Semver.Prerelease != "" { | ||||
| 		return pipe.Skip("release is prerelease") | ||||
| 	} | ||||
|   | ||||
| @@ -975,6 +975,60 @@ func Test_buildManifest(t *testing.T) { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestRunPipeScoopWithSkip(t *testing.T) { | ||||
| 	folder := t.TempDir() | ||||
| 	ctx := &context.Context{ | ||||
| 		Git: context.GitInfo{ | ||||
| 			CurrentTag: "v1.0.1", | ||||
| 		}, | ||||
| 		Version:   "1.0.1", | ||||
| 		Artifacts: artifact.New(), | ||||
| 		Config: config.Project{ | ||||
| 			Archives: []config.Archive{ | ||||
| 				{Format: "tar.gz"}, | ||||
| 			}, | ||||
| 			Builds: []config.Build{ | ||||
| 				{Binary: "test"}, | ||||
| 			}, | ||||
| 			Dist: folder, | ||||
| 			ProjectName: "run-pipe", | ||||
| 			Scoop: config.Scoop{ | ||||
| 				Bucket: config.RepoRef{ | ||||
| 					Owner: "test", | ||||
| 					Name:  "test", | ||||
| 				}, | ||||
| 				Description: "A run pipe test formula", | ||||
| 				Homepage:    "https://github.com/goreleaser", | ||||
| 				Name: "run-pipe", | ||||
| 				SkipUpload: "true", | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 	path := filepath.Join(folder, "bin.tar.gz") | ||||
| 	ctx.Artifacts.Add(&artifact.Artifact{ | ||||
| 		Name:   "bin.tar.gz", | ||||
| 		Path:   path, | ||||
| 		Goos:   "windows", | ||||
| 		Goarch: "amd64", | ||||
| 		Type:   artifact.UploadableArchive, | ||||
| 		Extra: map[string]interface{}{ | ||||
| 			"ID":     "foo", | ||||
| 			"Format": "tar.gz", | ||||
| 		}, | ||||
| 	}) | ||||
|  | ||||
| 	f, err := os.Create(path) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, f.Close()) | ||||
|  | ||||
| 	cli := &DummyClient{} | ||||
| 	require.EqualError(t, doRun(ctx, cli), `scoop.skip_upload is true`) | ||||
|  | ||||
| 	distFile := filepath.Join(folder, ctx.Config.Scoop.Name+".json") | ||||
| 	_, err = os.Stat(distFile) | ||||
| 	require.NoError(t, err, "file should exist: "+distFile) | ||||
| } | ||||
|  | ||||
| func TestWrapInDirectory(t *testing.T) { | ||||
| 	folder := t.TempDir() | ||||
| 	file := filepath.Join(folder, "archive") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user