Skip to content

Commit aaa59c5

Browse files
committed
chore: keep fixes from dagger module: use dagger for ci
1 parent d525ee0 commit aaa59c5

54 files changed

Lines changed: 582 additions & 21389 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dagger/.gitattributes

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/dagger.gen.go linguist-generated
2+
/internal/dagger/** linguist-generated
3+
/internal/querybuilder/** linguist-generated
4+
/internal/telemetry/** linguist-generated

.dagger/.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/dagger.gen.go
2+
/internal/dagger
3+
/internal/querybuilder
4+
/internal/telemetry
5+
/.env

.dagger/checks.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"fmt"
6+
)
7+
8+
// +check
9+
func (m *ForgeDev) IsFmted(ctx context.Context) error {
10+
if empty, err := m.Fmt(ctx).IsEmpty(ctx); err != nil {
11+
return err
12+
} else if !empty {
13+
return fmt.Errorf("source is not formatted (run `dagger call fmt`)")
14+
}
15+
16+
return nil
17+
}
18+
19+
// +check
20+
func (m *ForgeDev) TestsPass(ctx context.Context) error {
21+
test, err := m.Test(ctx)
22+
if err != nil {
23+
return err
24+
}
25+
26+
if _, err = test.CombinedOutput(ctx); err != nil {
27+
return err
28+
}
29+
30+
return nil
31+
}

.dagger/go.mod

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
module github.com/frantjc/forge/.dagger
2+
3+
go 1.25.1
4+
5+
require (
6+
github.com/99designs/gqlgen v0.17.83
7+
github.com/Khan/genqlient v0.8.1
8+
github.com/frantjc/x v0.0.0-20251110020906-e460e4351f65
9+
github.com/vektah/gqlparser/v2 v2.5.31
10+
go.opentelemetry.io/otel v1.38.0
11+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0
12+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0
13+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0
14+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0
15+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0
16+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0
17+
go.opentelemetry.io/otel/log v0.14.0
18+
go.opentelemetry.io/otel/metric v1.38.0
19+
go.opentelemetry.io/otel/sdk v1.38.0
20+
go.opentelemetry.io/otel/sdk/log v0.14.0
21+
go.opentelemetry.io/otel/sdk/metric v1.38.0
22+
go.opentelemetry.io/otel/trace v1.38.0
23+
go.opentelemetry.io/proto/otlp v1.9.0
24+
golang.org/x/sync v0.18.0
25+
google.golang.org/grpc v1.76.0
26+
)
27+
28+
require (
29+
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
30+
github.com/go-logr/logr v1.4.3 // indirect
31+
github.com/go-logr/stdr v1.2.2 // indirect
32+
github.com/google/uuid v1.6.0 // indirect
33+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect
34+
github.com/sosodev/duration v1.3.1 // indirect
35+
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
36+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect
37+
golang.org/x/net v0.47.0 // indirect
38+
golang.org/x/sys v0.38.0 // indirect
39+
golang.org/x/text v0.31.0 // indirect
40+
google.golang.org/genproto/googleapis/api v0.0.0-20251111163417-95abcf5c77ba // indirect
41+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251111163417-95abcf5c77ba // indirect
42+
google.golang.org/protobuf v1.36.10 // indirect
43+
)
44+
45+
replace (
46+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0
47+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0
48+
go.opentelemetry.io/otel/log => go.opentelemetry.io/otel/log v0.14.0
49+
go.opentelemetry.io/otel/sdk/log => go.opentelemetry.io/otel/sdk/log v0.14.0
50+
)

.dagger/go.sum

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
github.com/99designs/gqlgen v0.17.83 h1:LZOd4Of2snK5V22/ZWfBAPa3WoAZkBO70dKXM0ODHQk=
2+
github.com/99designs/gqlgen v0.17.83/go.mod h1:q6Lb64wknFqNFSbSUGzKRKupklvY/xgNr62g0GGWPB8=
3+
github.com/Khan/genqlient v0.8.1 h1:wtOCc8N9rNynRLXN3k3CnfzheCUNKBcvXmVv5zt6WCs=
4+
github.com/Khan/genqlient v0.8.1/go.mod h1:R2G6DzjBvCbhjsEajfRjbWdVglSH/73kSivC9TLWVjU=
5+
github.com/agnivade/levenshtein v1.2.1 h1:EHBY3UOn1gwdy/VbFwgo4cxecRznFk7fKWN1KOX7eoM=
6+
github.com/agnivade/levenshtein v1.2.1/go.mod h1:QVVI16kDrtSuwcpd0p1+xMC6Z/VfhtCyDIjcwga4/DU=
7+
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ=
8+
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
9+
github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=
10+
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
11+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
12+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
13+
github.com/frantjc/x v0.0.0-20251110020906-e460e4351f65 h1:7mUlt2cQIEvtM3X8kMyVUmXixcYQicazTu9HEiJiJ2s=
14+
github.com/frantjc/x v0.0.0-20251110020906-e460e4351f65/go.mod h1:tddPtloeZsRJ+hPcZlVSgS4rbm9RIuTKfaYv8EMHDlc=
15+
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
16+
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
17+
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
18+
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
19+
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
20+
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
21+
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
22+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
23+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
24+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
25+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
26+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg=
27+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4=
28+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
29+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
30+
github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
31+
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
32+
github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq4=
33+
github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg=
34+
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
35+
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
36+
github.com/vektah/gqlparser/v2 v2.5.31 h1:YhWGA1mfTjID7qJhd1+Vxhpk5HTgydrGU9IgkWBTJ7k=
37+
github.com/vektah/gqlparser/v2 v2.5.31/go.mod h1:c1I28gSOVNzlfc4WuDlqU7voQnsqI6OG2amkBAFmgts=
38+
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
39+
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
40+
go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8=
41+
go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM=
42+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 h1:OMqPldHt79PqWKOMYIAQs3CxAi7RLgPxwfFSwr4ZxtM=
43+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0/go.mod h1:1biG4qiqTxKiUCtoWDPpL3fB3KxVwCiGw81j3nKMuHE=
44+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 h1:QQqYw3lkrzwVsoEX0w//EhH/TCnpRdEenKBOOEIMjWc=
45+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0/go.mod h1:gSVQcr17jk2ig4jqJ2DX30IdWH251JcNAecvrqTxH1s=
46+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8=
47+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw=
48+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk=
49+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg=
50+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24=
51+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU=
52+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54=
53+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk=
54+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 h1:aTL7F04bJHUlztTsNGJ2l+6he8c+y/b//eR0jjjemT4=
55+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0/go.mod h1:kldtb7jDTeol0l3ewcmd8SDvx3EmIE7lyvqbasU3QC4=
56+
go.opentelemetry.io/otel/log v0.14.0 h1:2rzJ+pOAZ8qmZ3DDHg73NEKzSZkhkGIua9gXtxNGgrM=
57+
go.opentelemetry.io/otel/log v0.14.0/go.mod h1:5jRG92fEAgx0SU/vFPxmJvhIuDU9E1SUnEQrMlJpOno=
58+
go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA=
59+
go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI=
60+
go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E=
61+
go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg=
62+
go.opentelemetry.io/otel/sdk/log v0.14.0 h1:JU/U3O7N6fsAXj0+CXz21Czg532dW2V4gG1HE/e8Zrg=
63+
go.opentelemetry.io/otel/sdk/log v0.14.0/go.mod h1:imQvII+0ZylXfKU7/wtOND8Hn4OpT3YUoIgqJVksUkM=
64+
go.opentelemetry.io/otel/sdk/log/logtest v0.14.0 h1:Ijbtz+JKXl8T2MngiwqBlPaHqc4YCaP/i13Qrow6gAM=
65+
go.opentelemetry.io/otel/sdk/log/logtest v0.14.0/go.mod h1:dCU8aEL6q+L9cYTqcVOk8rM9Tp8WdnHOPLiBgp0SGOA=
66+
go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM=
67+
go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA=
68+
go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=
69+
go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs=
70+
go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A=
71+
go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4=
72+
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
73+
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
74+
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
75+
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
76+
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
77+
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
78+
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
79+
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
80+
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
81+
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
82+
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
83+
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
84+
google.golang.org/genproto/googleapis/api v0.0.0-20251111163417-95abcf5c77ba h1:B14OtaXuMaCQsl2deSvNkyPKIzq3BjfxQp8d00QyWx4=
85+
google.golang.org/genproto/googleapis/api v0.0.0-20251111163417-95abcf5c77ba/go.mod h1:G5IanEx8/PgI9w6CFcYQf7jMtHQhZruvfM1i3qOqk5U=
86+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251111163417-95abcf5c77ba h1:UKgtfRM7Yh93Sya0Fo8ZzhDP4qBckrrxEr2oF5UIVb8=
87+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251111163417-95abcf5c77ba/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
88+
google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A=
89+
google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c=
90+
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
91+
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
92+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
93+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

.dagger/main.go

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"strings"
7+
8+
"github.com/frantjc/forge/.dagger/internal/dagger"
9+
xslices "github.com/frantjc/x/slices"
10+
)
11+
12+
type ForgeDev struct {
13+
Source *dagger.Directory
14+
}
15+
16+
func New(
17+
ctx context.Context,
18+
// +optional
19+
// +defaultPath="."
20+
src *dagger.Directory,
21+
) (*ForgeDev, error) {
22+
return &ForgeDev{
23+
Source: src,
24+
}, nil
25+
}
26+
27+
func (m *ForgeDev) Fmt(ctx context.Context) *dagger.Changeset {
28+
goModules := []string{
29+
".dagger/",
30+
}
31+
32+
root := dag.Go(dagger.GoOpts{
33+
Module: m.Source.Filter(dagger.DirectoryFilterOpts{
34+
Exclude: goModules,
35+
}),
36+
}).
37+
Container().
38+
WithExec([]string{"go", "fmt", "./..."}).
39+
Directory(".")
40+
41+
for _, module := range goModules {
42+
root = root.WithDirectory(
43+
module,
44+
dag.Go(dagger.GoOpts{
45+
Module: m.Source.Directory(module).Filter(dagger.DirectoryFilterOpts{
46+
Exclude: xslices.Filter(goModules, func(m string, _ int) bool {
47+
return strings.HasPrefix(m, module)
48+
}),
49+
}),
50+
}).
51+
Container().
52+
WithExec([]string{"go", "fmt", "./..."}).
53+
Directory("."),
54+
)
55+
}
56+
57+
return root.Changes(m.Source)
58+
}
59+
60+
func (m *ForgeDev) Test(ctx context.Context) (*dagger.Container, error) {
61+
return dag.Go(dagger.GoOpts{
62+
Module: m.Source,
63+
}).
64+
Container().
65+
WithExec([]string{"go", "test", "-race", "-cover", "-test.v", "./..."}), nil
66+
}
67+
68+
func (m *ForgeDev) Release(ctx context.Context, githubToken *dagger.Secret) error {
69+
gitRef := m.Source.AsGit().LatestVersion()
70+
71+
ref, err := gitRef.Ref(ctx)
72+
if err != nil {
73+
return err
74+
}
75+
76+
tag := strings.TrimPrefix(ref, "refs/tags/")
77+
78+
release := dag.Wolfi().
79+
Container(dagger.WolfiContainerOpts{
80+
Packages: []string{"gh"},
81+
}).
82+
WithSecretVariable("GITHUB_TOKEN", githubToken).
83+
WithExec([]string{"gh", "release", "-R=frantjc/forge", "create", tag, "--generate-notes", "--draft"})
84+
85+
g0 := dag.Go(dagger.GoOpts{
86+
Module: gitRef.Tree(),
87+
})
88+
89+
for _, goos := range []string{"darwin", "linux"} {
90+
for _, goarch := range []string{"amd64", "arm64"} {
91+
file := fmt.Sprintf("forge_%s_%s_%s", tag, goos, goarch)
92+
93+
release = release.
94+
WithFile(
95+
file,
96+
g0.Build(dagger.GoBuildOpts{
97+
Pkg: "./cmd/forge",
98+
Ldflags: "-s -w -X main.version=" + tag,
99+
Goos: goos,
100+
Goarch: goarch,
101+
}),
102+
).
103+
WithExec([]string{
104+
"gh", "release", "-R=frantjc/forge", "upload", tag, file,
105+
})
106+
}
107+
}
108+
109+
_, err = release.
110+
WithExec([]string{"gh", "release", "-R=frantjc/forge", "edit", tag, "--latest", "--draft=false"}).
111+
Sync(ctx)
112+
if err != nil {
113+
return err
114+
}
115+
116+
return nil
117+
}
118+
119+
func (m *ForgeDev) Binary(
120+
ctx context.Context,
121+
// +default=v0.0.0-unknown
122+
version string,
123+
// +optional
124+
goarch string,
125+
// +optional
126+
goos string,
127+
) *dagger.File {
128+
return dag.Go(dagger.GoOpts{
129+
Module: m.Source,
130+
}).
131+
Build(dagger.GoBuildOpts{
132+
Pkg: "./cmd/forge",
133+
Ldflags: "-s -w -X main.version=" + version,
134+
Goos: goos,
135+
Goarch: goarch,
136+
})
137+
}
138+
139+
func (m *ForgeDev) Vulncheck(ctx context.Context) (string, error) {
140+
return dag.Go(dagger.GoOpts{
141+
Module: m.Source,
142+
}).
143+
Container().
144+
WithExec([]string{"go", "install", "golang.org/x/vuln/cmd/govulncheck@v1.1.4"}).
145+
WithExec([]string{"govulncheck", "./..."}).
146+
CombinedOutput(ctx)
147+
}
148+
149+
func (m *ForgeDev) Vet(ctx context.Context) (string, error) {
150+
return dag.Go(dagger.GoOpts{
151+
Module: m.Source,
152+
}).
153+
Container().
154+
WithExec([]string{"go", "vet", "./..."}).
155+
CombinedOutput(ctx)
156+
}
157+
158+
func (m *ForgeDev) Staticcheck(ctx context.Context) (string, error) {
159+
return dag.Go(dagger.GoOpts{
160+
Module: m.Source,
161+
}).
162+
Container().
163+
WithExec([]string{"go", "install", "honnef.co/go/tools/cmd/staticcheck@v0.6.1"}).
164+
WithExec([]string{"staticcheck", "./..."}).
165+
CombinedOutput(ctx)
166+
}

.githooks/pre-commit

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/usr/bin/env sh
2+
3+
dagger check

.github/actions/setup-forge/.eslintignore

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)