Continuing on #5308 and #5307, this finally adds Zig support to
GoReleaser!
Things are very raw still, plenty of use cases to test (please do test
on your project if you can), but it does work at least for simple
projects!
A release done by this:
https://github.com/goreleaser/example-zig/releases/tag/v0.1.0
---------
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
This will also come in handy for multiple languages support (#5307).
---------
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
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.
this will use the default value for GOMIPS, GOARM, GO386, and etc in
build overrides if they are not specified.
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Maybe 3rd time is the charm!
This makes the CI build run on windows too, and fix broken tests/featuers on Windows.
Most of the changes are related to ignoring certain tests on windows, or making sure to use the right path separators.
More work to do in the future, probably!
#4293
---------
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Since Go386 now has a default value, existing configurations no longer
match 386 builds (d583861e0606f2bb9e97c0d0e28f9b82df6a187a).
Since we used to need to write goamd64=1 to match _amd64 builds, I added
new opts to fix that. (If you think you need to set some default for
override, that would be even better)
The PR refactors code by replacing usage of
`golang.org/exp/slices`/`golang.org/exp/maps` package with the standard
`slices`/`maps`. Additionally, replace the function `keys(someMap)` with
`slices.Compact(maps.Keys(someMap))`
Co-authored-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
continuing the work of #5153closes#5153
---------
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Co-authored-by: 世界 <i@sekai.icu>
This commit fixes the automatic extension when building the wasip1_wasm
target.
Additionally, in future Go versions, support will be added for
generating c-shared WASM binaries.
https://github.com/golang/go/issues/65199
Therefore, this PR corrects the extension in the build process and
removes the .h file from the release when c-shared is enabled and the
target is WASM.
Ignore empty flags after templating is applied for final Go build line.
This caused us some problems since we had an `if` without `else`,
resulting in an empty flag, causing the whole build to fail with a
misleading error message like:
```
malformed import path "-myflag": leading dash
```
<!--
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>
The PR enables
[`nolintlint`](https://golangci-lint.run/usage/linters/#nolintlint)
linter and fixes up appeared issues.
Changes:
- Enable `nolintlint` in `.golangci.yml` config.
- Remove unused `//nolint:` comments.
- Fix `nolint` comment format by removing spaces (`// nolint: dupl` ->
`//nolint:dupl`)
Co-authored-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
if the output is not empty, log it with info.
this prevents potentially hiding warnings et al.
on successful builds usually the output is empty anyway.
closes#4782
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
The PR refactors tests:
- change two lines `require.Error + require.Contains` with one
`require.ErrorContains`;
- change `require.Error + require.Equal` with `require.EqualError`.
when building a go test without the `-c` flag like so:
```yaml
builds:
- command: test
binary: env.test
dir: ./internal/builders/golang
no_main_check: true
```
will result in the error: `exit status 1: fork/exec : exec format error`
adding the -c flags when not present in the flags
adding unit test
https://github.com/goreleaser/goreleaser/issues/4462
---------
Co-authored-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
- improves deprecation warning styles a bit so they caught the readers
eye faster and are easier to read
- warns if the user uses `builds.target` in conjunction with other
options which are ignored in that case
- improved env output
- improved no configuration found warning
some of the changes:
<img width="1263" alt="CleanShot 2023-07-24 at 21 38 41@2x"
src="https://github.com/goreleaser/goreleaser/assets/245435/40465853-7177-44d6-b07b-61b67590669a">
---------
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
We have been using `t.Setenv` is most of our tests. This PR replaces the
remaining `os.Setenv` with `t.Setenv`.
Reference: https://pkg.go.dev/testing#T.Setenv
```go
func TestFoo(t *testing.T) {
// before
os.Setenv(key, "new value")
defer os.Unsetenv(key)
// after
t.Setenv(key, "new value")
}
```
---------
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
- log keys will be ordered as intended instead of sorted
- paths always relative to cwd
---------
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
alternative to #3806
the idea is that both `context.New` and `context.Context{}` are never
used in tests.
not sure yet how much I like it, so far code does look a bit more
readable though.
---------
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
GoReleaser evolved a lot since the last time I tried to implement this
>1 year ago.
Now its 100% possible, and way simpler to do it!
closes#3580
refs #2583
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
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>