diff --git a/brew/brew.go b/brew/brew.go index e6f2a90d6..914a54b22 100644 --- a/brew/brew.go +++ b/brew/brew.go @@ -5,7 +5,7 @@ import ( "context" "crypto/sha256" "fmt" - "html/template" + "text/template" "strings" "github.com/google/go-github/github" @@ -51,6 +51,16 @@ func Brew(version string, config config.ProjectConfig) error { var out bytes.Buffer tmpl.Execute(&out, data) + var sha *string + file, _, _, err := client.Repositories.GetContents( + parts[0], parts[1], config.BinaryName+".rb", &github.RepositoryContentGetOptions{}, + ) + if err == nil { + sha = file.SHA + } else { + sha = github.String(fmt.Sprintf("%s", sha256.Sum256(out.Bytes()))) + } + _, _, err = client.Repositories.UpdateFile( parts[0], parts[1], @@ -62,7 +72,7 @@ func Brew(version string, config config.ProjectConfig) error { }, Content: out.Bytes(), Message: github.String(config.BinaryName + " version " + version), - SHA: github.String(fmt.Sprintf("%s", sha256.Sum256(out.Bytes()))), + SHA: sha, }, ) return err diff --git a/goreleaser.yml b/goreleaser.yml index 01c3015f3..fc314f9f0 100644 --- a/goreleaser.yml +++ b/goreleaser.yml @@ -1,7 +1,7 @@ repo: goreleaser/releaser binary_name: release brew: - repo: goreleaser/brew + repo: goreleaser/homebrew-formulae build: arches: - amd64 \ No newline at end of file diff --git a/release/release.go b/release/release.go index 31d6e3938..8e31a80e1 100644 --- a/release/release.go +++ b/release/release.go @@ -23,6 +23,7 @@ func Release(version, diff string, config config.ProjectConfig) error { owner := strings.Split(config.Repo, "/")[0] repo := strings.Split(config.Repo, "/")[1] + // TODO update release if it already exists r, _, err := client.Repositories.CreateRelease(owner, repo, &github.RepositoryRelease{ Name: github.String(version), TagName: github.String(version),