1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-07-13 01:30:50 +02:00

82 Commits

Author SHA1 Message Date
f247d7d38c feat(template): allow to use .Target (#5308)
This will also come in handy for multiple languages support (#5307).

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2024-11-25 23:41:00 -03:00
d43f84aa3f refactor(build): preparing to support multiple languages (#5307)
This starts laying the foundation for supporting more languages, the
first of which will probably be Zig, and then Rust.

I already have a zig prototype working in another branch, just raw
dogged it to see if it would work, and since it does, now I'll do it
piece by piece but with hopefully slightly better code.
2024-11-25 23:00:28 -03:00
fac5e48c77 fix: URL escape tags in github, gitlab, and gitea (#5283)
refs #5282
2024-11-15 10:39:05 -03:00
91525f763c fix: tmpl always copy before modifying (#5200)
this is just to prevent some gotchas when using `templ` internally.
2024-10-14 23:59:26 -03:00
d3ce82ff9f fix: tmpl .386 -> .I386
Template key can't start with a number.

Refs #5186
2024-10-14 11:29:05 -03:00
d583861e06 feat(build): add GO386, GOMIPS64, GORISCV64, and GOPPC64 support (#5186)
continuing the work of #5153

closes #5153

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Co-authored-by: 世界 <i@sekai.icu>
2024-10-14 09:40:10 -03:00
e8da87cecb feat(tmpl): IsSingleTarget (#5122)
refs #5024

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2024-09-07 11:09:21 -03:00
3ae3a098e7 fix: isEnvSet and envOrDefault not working sometimes
closes #5059
2024-08-08 10:50:37 -03:00
ec2db4a727 feat!: rename module to /v2 (#4894)
<!--

Hi, thanks for contributing!

Please make sure you read our CONTRIBUTING guide.

Also, add tests and the respective documentation changes as well.

-->


<!-- If applied, this commit will... -->

...

<!-- Why is this change being made? -->

...

<!-- # Provide links to any relevant tickets, URLs or other resources
-->

...

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2024-05-26 15:02:57 -03:00
d5fc94a81d refactor: optimize strings replacers (#4788)
Reuse strings replace instead of recreation
2024-04-16 20:56:45 -03:00
60a1cccf57 feat: isEnvSet tmpl function (#4775)
useful for conditionally enable/disable things based on whether an env
var is set or not
2024-04-12 11:09:18 -03:00
1ba3138c67 feat(tmpl): .GitTreeState and .IsGitClean
Avoids having too much template if blocks inside the configuration file.
2024-01-18 08:07:38 -03:00
5d44ed14fd feat(tmpl): contains
closes https://github.com/orgs/goreleaser/discussions/4548
2024-01-17 08:52:51 -03:00
b8cc16d4ac fix: .Amd64 in build hooks
closes #4399
2023-11-02 12:47:00 +00:00
37e3fdee55 refactor(tmpl): avoid unnecessary byte/string conversion (#4356)
We can use `(*regexp.Regexp).MatchString` instead of
`(*regexp.Regexp).Match([]byte(...))` to avoid unnecessary `[]byte`
conversions and reduce allocations. A one-line change for free
performance gain.

Benchmark:

```go
func BenchmarkMatch(b *testing.B) {
	for i := 0; i < b.N; i++ {
		if match := envOnlyRe.Match([]byte("{{ .Env.FOO }}")); !match {
			b.Fail()
		}
	}
}

func BenchmarkMatchString(b *testing.B) {
	for i := 0; i < b.N; i++ {
		if match := envOnlyRe.MatchString("{{ .Env.FOO }}"); !match {
			b.Fail()
		}
	}
}
```

Result:

```
goos: linux
goarch: amd64
pkg: github.com/goreleaser/goreleaser/internal/tmpl cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
BenchmarkMatch-16          	 4320873	       381.2 ns/op	      16 B/op	       1 allocs/op
BenchmarkMatchString-16    	 5973543	       203.9 ns/op	       0 B/op	       0 allocs/op
PASS
ok  	github.com/goreleaser/goreleaser/internal/tmpl	3.366s
```

Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2023-10-10 09:54:44 -03:00
Jo
24347358e9 feat: add map and indexOrDefault template functions (#4317)
Add a new function `map` to template functions.

`map` creates a map from a list of pairs of key values, then you can
convert a key to a value using `.Get`. This simplifies writing
key-mapping templates. For example, the defaule `archives.name_template`

```yaml
name_template: >-
    {{ .ProjectName }}_
    {{- title .Os }}_
    {{- if eq .Arch "amd64" }}x86_64
    {{- else if eq .Arch "386" }}i386
    {{- else }}{{ .Arch }}{{ end }}
    {{- if .Arm }}v{{ .Arm }}{{ end }}
```

becomes

```yaml
name_template: >-
  {{ $arch := map "amd64" "x86_64" "386" "i386" -}}
  {{ .ProjectName }}_
  {{- title .OS }}_
  {{- $arch.Get .Arch .Arch }}
  {{- if .Arm }}v{{ .Arm }}{{ end }}
```

---------

Co-authored-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2023-09-20 16:03:46 -03:00
c91c4b7cd8 feat: improve template error handling (#4256)
- wrap the multiple errors in an internal error with cleaner messaging
- improve testlib.RequireTemplateError and several tests
2023-08-24 22:06:12 -03:00
c57cdab0c6 refactor: add function to apply template multiple times (#4158)
If applied, this commit simplifies the code required to support
templated fields in configuration files. This should make it easier to
add more templated fields in the future.

As [discussed first on
Discord](https://discord.com/channels/890434333251362866/1032457293687685191/1124033219747127316).
2023-06-30 14:46:53 -03:00
51592e1424 feat: envOrDefault template function (#4097)
You can achieve the same with `{{ with (index .Env "NAME") }}etc`, but
this looks cleaner.

refs #4096
2023-06-14 00:16:01 -03:00
66cee9493c feat: remove deprecated replacements (#4075)
since this will be a late, big release, let's remove the deprecated
stuff that expired

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2023-06-06 11:46:02 -03:00
b1c8e9f25b feat: added IsNightly to OSS template variables
This should make it easier to use the same config file with both oss and
pro versions when only the nightly feature is used, e.g. in #3501.

Currently, that would fail because `IsNightly` is not a template field,
so you won't really be able to do it without keeping a second
`.goreleaser.yml` file. With this change, `IsNightly` always eval to
false on OSS, and keeps working as before on Pro.
2023-06-06 01:07:26 -03:00
e0dabc1cb9 feat(telegram): ability to choose msg format, mdv2escape (#4036)
this allows to choose parse mode between `HTML` and `Markdownv2`, and
adds a new template function, `mdv2escape`, to escape the characters
according to telegram docs:
https://core.telegram.org/bots/api#formatting-options


closes #4021
2023-05-27 00:17:02 -03:00
4330b522ea feat: IsGitDirty template variable (#3967)
will only ever be true on snapshots or when ran with `--skip-validate`.
This should be useful as a ldflag, for example.
2023-05-02 01:04:18 -03:00
44f8fae305 feat: IsDraft template variable (#3888)
allows to use `{{ .IsDraft }}` in templates.

---------

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2023-03-24 00:01:48 -03:00
88f3aea086 refactor: improve tmpl mergeability with pro
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2023-03-19 23:32:33 -03:00
590eff32d2 feat: .Now template variable (#3853)
This will allow more customized templates using dates!

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2023-03-19 22:21:43 -03:00
a40eb15618 feat: add base template function (#3834)
refs #3833

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2023-03-04 12:16:37 -03:00
90a82157ca refactor: improve tmpls that eval to a bool (#3726)
- added a tmpl.Bool that checks if the result of a template is "true"
- added an ErrSkipper interface so Skip() methods can return errors as well

---------

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2023-01-28 23:21:43 -03:00
e54656438b feat: deprecate replacements (#3589)
The replacements thing was always a bit weird, especially on archives.

We can solve that with templates, so, removing I'm deprecating it.

Also did the same on other places that had it the same feature.

Closes #3588

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-11-25 15:26:14 -03:00
a1305d3912 fix: validate env templates (#3591)
ignore invalid environment variables (e.g. no key, no value, or no equal
sign)

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-11-24 17:12:54 -03:00
f3f1c08caf feat: title template function (#3590)
added new `title` template function.


extracted from #3589

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-11-24 15:21:42 -03:00
42eaf083fe feat: add split tmpl function (#3293) 2022-08-07 11:39:04 -03:00
a31b4aa0ae feat: ArtifactExt as a template field 2022-08-01 16:04:20 -03:00
72329ab722 refactor: improve handling of extra fields in artifacts (#3191)
* refactor: improve handling of extra fields in artifacts

Backporting from pro: with this we can parse the artifacts list from
json into the context and use them again.

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* fix: tests

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* test: fix

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-06-23 23:36:19 -03:00
b0583c700b feat: support GOAMD64 (#3016)
* feat: support GOAMD64

* fix: test

* wip

* wip: docker et al

* fix: archive format name

* test: added new test

* feat: nfpm amd4, mips et al

* chore: rm unused file

* fix: brew for multiple goamd64

* fix: krew

* feat: aur

* feat: krew

* docs: brew

* feat: gofis

* feat: scoop

* fix: docker filters

* fix: snapcraft

* fix: improve diff a bit

* fix: snapcraft name template
2022-04-11 22:43:22 -03:00
077ce16174 feat: more go 1.18 (#2984)
* feat: more go 1.18

moved more workflows to go 1.18, switched some code to strings.Cut

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

* revert unwanted change
2022-03-16 23:28:13 -03:00
d295d0bdff feat: annotated tag body (#2923)
* feat: annotated tag body

this adds another template variable, `TagBody`, with the body of the annotated tag/commit message only.

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

* refactor: tag contents

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2022-02-24 22:57:51 -03:00
f0af44ccbe feat: add filter and reverseFilter template functions (#2924)
* feat: add grep and grep -v template functions

this adds `grep` and `reverseGrep` template functions, which should help dealing with text.

refs #2920

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

* refactor: rename funcs

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2022-02-24 22:57:43 -03:00
9d481d4630 feat: expose runtime goos and goarch on templates and metadata (#2859)
* feat: expose runtime goos and goarch on templates and metadata

* test: fix duplicated map literal in some os/arch

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2022-01-31 22:36:22 -03:00
6ea7fb792a feat: annotated tag contents (#2744)
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2021-12-06 16:52:26 -03:00
9b9eef04a2 feat: get annotated tag message (#2730)
refs  #2726

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2021-12-05 23:23:15 -03:00
274ffae03c feat: add git summary support (aka git describe --dirty --tags --always) (#2700)
* feat: add git summary support (aka git describe --dirty --tags --always)

* feat: update documentation for new summary template variable

* test: add tests for new summary feature
2021-11-25 03:01:56 +00:00
cd261a527a feat: allow to use .PreviousTag on templates (#2683)
* feat: expose .PreviousTag

* fix: previous tag will never be a commit

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

* fix: tests

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

* docs: tag

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2021-11-24 09:12:24 -03:00
a2ba9cb8fa refactor: release url (#2637)
* refactor: release url

* chore: fmt

* chore: less diffs

* docs: lowercase everything

* chore: improve fmt

* chore: revert
2021-11-06 16:54:01 -03:00
b99ccc029c feat: add message template support for git providers (#2626)
* feat: add message template support for git providers

Co-authored-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Signed-off-by: Batuhan Apaydın <batuhan.apaydin@trendyol.com>
Co-authored-by: Furkan Türkal <furkan.turkal@trendyol.com>
Co-authored-by: Erkan Zileli <erkan.zileli@trendyol.com>
Signed-off-by: Batuhan Apaydın <batuhan.apaydin@trendyol.com>

* Apply suggestions from code review

Co-authored-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Co-authored-by: Furkan Türkal <furkan.turkal@trendyol.com>
Co-authored-by: Erkan Zileli <erkan.zileli@trendyol.com>
2021-11-06 15:39:43 -03:00
8e89e3fde3 fix: remove .git suffix by default from announcers (#2623)
* fix: remove .git suffix by default from announcers

Fixes #2622

Signed-off-by: Furkan <furkan.turkal@trendyol.com>
Co-authored-by: Batuhan <batuhan.apaydin@trendyol.com>
Co-authored-by: Erkan <erkan.zileli@trendyol.com>

* feat(doc): update defaults

Signed-off-by: Erkan Zileli <erkan.zileli@trendyol.com>
Co-authored-by: Batuhan <batuhan.apaydin@trendyol.com>
Co-authored-by: Furkan <furkan.turkal@trendyol.com>

Co-authored-by: Batuhan <batuhan.apaydin@trendyol.com>
Co-authored-by: Erkan <erkan.zileli@trendyol.com>
2021-11-02 20:03:23 -03:00
e64b2cd8da feat: Allow release notes to be used in template strings (#2566)
When using the announce feature, you might want to inform your users about the features and changes that this release brings. This change allows you to use {{ .ReleaseNotes }} in any template string, after the changelog pipeline step has been executed.
2021-10-07 14:19:19 -03:00
d77f862fa4 refactor: improve build (#2475)
* refactor: improve build

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

* test: coverage

Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>
2021-09-11 13:01:57 -03:00
b176b1ff80 feat: inc parts of semver, change snapshot default name (#2358) 2021-07-24 10:13:05 -03:00
bf4359017b feat: Use GitLab Direct Asset Links (#2219)
* feat: Use GitLab Direct Asset Links

Implement the use of Direct Asset Links when uploading artifacts to a GitLab release

* fix: Remove ArtifactUploadHash

As GitLab support for direct asset linking exists, remove ArtifactUploadHash due to it no longer being required

* test: fix unit tests for gitlab urls

* fix: Use artifact name during GitLab upload

file.Name() included the path to the file, which isn't needed and breaks other areas such as homebrew releases

* docs: Require GitLab version v12.9+

Due to newly introduced dependency on direct asset linking
2021-05-17 17:33:04 +00:00