Skip to content

Commit 0755d25

Browse files
committed
feat: UploadPurger and GarbageCollector
1 parent 6cc0088 commit 0755d25

33 files changed

+1025
-201
lines changed

go.mod

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,10 @@ require (
2929
github.com/gobwas/glob v0.2.3
3030
github.com/google/go-containerregistry v0.20.3
3131
github.com/google/uuid v1.6.0
32+
github.com/octohelm/exp v0.0.0-20250423100159-9c03fb1725b0
3233
github.com/opencontainers/go-digest v1.0.0
3334
github.com/opencontainers/image-spec v1.1.1
34-
golang.org/x/sync v0.14.0
35+
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff
3536
)
3637

3738
require (
@@ -92,6 +93,7 @@ require (
9293
github.com/prometheus/client_model v0.6.2 // indirect
9394
github.com/prometheus/common v0.63.0 // indirect
9495
github.com/prometheus/procfs v0.16.1 // indirect
96+
github.com/robfig/cron/v3 v3.0.1 // indirect
9597
github.com/rs/xid v1.6.0 // indirect
9698
github.com/sirupsen/logrus v1.9.3 // indirect
9799
github.com/spf13/cobra v1.9.1 // indirect
@@ -116,6 +118,7 @@ require (
116118
golang.org/x/mod v0.24.0 // indirect
117119
golang.org/x/net v0.40.0 // indirect
118120
golang.org/x/oauth2 v0.30.0 // indirect
121+
golang.org/x/sync v0.14.0 // indirect
119122
golang.org/x/sys v0.33.0 // indirect
120123
golang.org/x/term v0.32.0 // indirect
121124
golang.org/x/text v0.25.0 // indirect
@@ -132,7 +135,6 @@ require (
132135
k8s.io/apimachinery v0.33.0 // indirect
133136
k8s.io/client-go v0.33.0 // indirect
134137
k8s.io/klog/v2 v2.130.1 // indirect
135-
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
136138
k8s.io/utils v0.0.0-20250502105355-0f33e8f1c979 // indirect
137139
mvdan.cc/gofumpt v0.8.0 // indirect
138140
sigs.k8s.io/controller-runtime v0.20.4 // indirect

go.sum

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/Z
9898
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
9999
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
100100
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
101-
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
102101
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo=
103102
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI=
104103
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -172,6 +171,8 @@ github.com/octohelm/courier v0.0.0-20250416054450-c6bcc185d5c3 h1:Btz+MsChTBJjHT
172171
github.com/octohelm/courier v0.0.0-20250416054450-c6bcc185d5c3/go.mod h1:iKnWyzI7JWhivnutd6b27hJO/IZyD69Y7XogbBJ1VrA=
173172
github.com/octohelm/enumeration v0.0.0-20250115091102-ddf41951d733 h1:QFroPAzF1hZYuy90nuxz6XXrX12ZLQUTmsAOLUbBVAk=
174173
github.com/octohelm/enumeration v0.0.0-20250115091102-ddf41951d733/go.mod h1:s4JBUBvmokS4N0uxRnjds0tBRlBn355OFz2EDHLnEZk=
174+
github.com/octohelm/exp v0.0.0-20250423100159-9c03fb1725b0 h1:9nD2eRGj34ZQaE4v66qp5pb3WAWakkPYelbMuxzZ1bs=
175+
github.com/octohelm/exp v0.0.0-20250423100159-9c03fb1725b0/go.mod h1:1QfTq1BoUqnIyMacl5MK4yfU8R4XxidoP2w9Pr/Obis=
175176
github.com/octohelm/gengo v0.0.0-20250418031154-d14a228621d4 h1:bdFueXeKYpbR5VXp14t+eP/fwP28RhD5Fd343CLTRlg=
176177
github.com/octohelm/gengo v0.0.0-20250418031154-d14a228621d4/go.mod h1:0Dh96/14t+A7nmqBf7TyPXBv+tdflmbMi5x97ytMTdY=
177178
github.com/octohelm/kubepkgspec v0.0.0-20250417113059-3a0b7b2c59f4 h1:qxr8cwq2OWMWcnz4x4kNroV5WKJYHz3+QZua1d0QXpg=
@@ -188,7 +189,6 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8
188189
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
189190
github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
190191
github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
191-
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
192192
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
193193
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
194194
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -206,6 +206,8 @@ github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzM
206206
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
207207
github.com/protocolbuffers/txtpbfmt v0.0.0-20241112170944-20d2c9ebc01d h1:HWfigq7lB31IeJL8iy7jkUmU/PG1Sr8jVGhS749dbUA=
208208
github.com/protocolbuffers/txtpbfmt v0.0.0-20241112170944-20d2c9ebc01d/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c=
209+
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
210+
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
209211
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
210212
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
211213
github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU=
@@ -262,8 +264,6 @@ go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5J
262264
go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w=
263265
go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs=
264266
go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc=
265-
go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4=
266-
go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4=
267267
go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI=
268268
go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc=
269269
go.shabbyrobe.org/gocovmerge v0.0.0-20230507111327-fa4f82cfbf4d h1:Ns9kd1Rwzw7t0BR8XMphenji4SmIoNZPn8zhYmaVKP8=
@@ -277,8 +277,6 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
277277
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
278278
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
279279
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
280-
golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
281-
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
282280
golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8=
283281
golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw=
284282
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -289,19 +287,13 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
289287
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
290288
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
291289
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
292-
golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
293-
golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
294290
golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY=
295291
golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds=
296-
golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98=
297-
golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
298292
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
299293
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
300294
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
301295
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
302296
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
303-
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
304-
golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
305297
golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
306298
golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
307299
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -312,18 +304,12 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w
312304
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
313305
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
314306
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
315-
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
316-
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
317307
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
318308
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
319-
golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o=
320-
golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw=
321309
golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg=
322310
golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ=
323311
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
324312
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
325-
golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
326-
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
327313
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
328314
golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
329315
golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
@@ -332,20 +318,14 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm
332318
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
333319
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
334320
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
335-
golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU=
336-
golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s=
337321
golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc=
338322
golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI=
339323
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
340324
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
341325
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
342326
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
343-
google.golang.org/genproto/googleapis/api v0.0.0-20250425173222-7b384671a197 h1:9DuBh3k1jUho2DHdxH+kbJwthIAq02vGvZNrD2ggF+Y=
344-
google.golang.org/genproto/googleapis/api v0.0.0-20250425173222-7b384671a197/go.mod h1:Cd8IzgPo5Akum2c9R6FsXNaZbH3Jpa2gpHlW89FqlyQ=
345327
google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2 h1:vPV0tzlsK6EzEDHNNH5sa7Hs9bd7iXR7B1tSiPepkV0=
346328
google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:pKLAc5OolXC3ViWGI62vvC0n10CpwAtRcTNCFwTKBEw=
347-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250425173222-7b384671a197 h1:29cjnHVylHwTzH66WfFZqgSQgnxzvWE+jvBwpZCLRxY=
348-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250425173222-7b384671a197/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
349329
google.golang.org/genproto/googleapis/rpc v0.0.0-20250505200425-f936aa4a68b2 h1:IqsN8hx+lWLqlN+Sc3DoMy/watjofWiU8sRFgQ8fhKM=
350330
google.golang.org/genproto/googleapis/rpc v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
351331
google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM=
@@ -376,8 +356,6 @@ k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
376356
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
377357
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4=
378358
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8=
379-
k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e h1:KqK5c/ghOm8xkHYhlodbp6i6+r+ChV2vuAuVRdFbLro=
380-
k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
381359
k8s.io/utils v0.0.0-20250502105355-0f33e8f1c979 h1:jgJW5IePPXLGB8e/1wvd0Ich9QE97RvvF3a8J3fP/Lg=
382360
k8s.io/utils v0.0.0-20250502105355-0f33e8f1c979/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
383361
mvdan.cc/gofumpt v0.8.0 h1:nZUCeC2ViFaerTcYKstMmfysj6uhQrA2vJe+2vwGU6k=

internal/cmd/crkit/serve_registry.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"github.com/innoai-tech/infra/pkg/cli"
55
"github.com/innoai-tech/infra/pkg/otel"
66
contentapi "github.com/octohelm/crkit/pkg/content/api"
7+
"github.com/octohelm/crkit/pkg/content/fs/garbagecollector"
8+
"github.com/octohelm/crkit/pkg/content/fs/uploadpurger"
79
"github.com/octohelm/crkit/pkg/registryhttp"
810
)
911

@@ -17,5 +19,8 @@ type Registry struct {
1719

1820
contentapi.NamespaceProvider
1921

22+
UploadPurger uploadpurger.UploadPurger
23+
GarbageCollector garbagecollector.GarbageCollector
24+
2025
registryhttp.Server
2126
}

internal/cmd/crkit/zz_generated.runtimedoc.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ func (v *Registry) RuntimeDoc(names ...string) ([]string, bool) {
1414
if doc, ok := runtimeDoc(&v.NamespaceProvider, "", names...); ok {
1515
return doc, ok
1616
}
17+
if doc, ok := runtimeDoc(&v.UploadPurger, "", names...); ok {
18+
return doc, ok
19+
}
1720
if doc, ok := runtimeDoc(&v.Server, "", names...); ok {
1821
return doc, ok
1922
}

pkg/content/api/doc.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
//go:generate go tool devtool gen .
2+
package api

pkg/content/api/namespace_provider.go

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
//go:generate go tool devtool gen .
21
package api
32

43
import (
@@ -7,13 +6,14 @@ import (
76
"os"
87
"path/filepath"
98

10-
"github.com/octohelm/unifs/pkg/filesystem"
11-
129
"github.com/go-courier/logr"
13-
"github.com/octohelm/crkit/pkg/content"
1410
contentfs "github.com/octohelm/crkit/pkg/content/fs"
1511
contentproxy "github.com/octohelm/crkit/pkg/content/proxy"
12+
13+
"github.com/octohelm/crkit/pkg/content"
14+
"github.com/octohelm/crkit/pkg/content/fs/driver"
1615
contentremote "github.com/octohelm/crkit/pkg/content/remote"
16+
"github.com/octohelm/unifs/pkg/filesystem"
1717
"github.com/octohelm/unifs/pkg/filesystem/api"
1818
"github.com/octohelm/unifs/pkg/strfmt"
1919
)
@@ -22,8 +22,10 @@ import (
2222
type NamespaceProvider struct {
2323
Remote contentremote.Registry
2424
Content api.FileSystemBackend
25+
2526
NoCache bool `flag:",omitzero"`
2627

28+
driver driver.Driver `provide:""`
2729
namespace content.Namespace `provide:""`
2830
}
2931

@@ -33,20 +35,31 @@ func (s *NamespaceProvider) beforeInit(ctx context.Context) error {
3335
if err != nil {
3436
return err
3537
}
36-
endpoint, _ := strfmt.ParseEndpoint("file://" + filepath.Join(cwd, ".tmp/container-registry"))
38+
39+
endpoint, err := strfmt.ParseEndpoint("file://" + filepath.Join(cwd, ".tmp/container-registry"))
40+
if err != nil {
41+
return err
42+
}
43+
3744
s.Content.Backend = *endpoint
3845
}
3946

4047
return nil
4148
}
4249

4350
func (s *NamespaceProvider) afterInit(ctx context.Context) error {
44-
if err := filesystem.MkdirAll(ctx, s.Content.FileSystem(), "."); err != nil {
45-
return err
51+
if !s.NoCache {
52+
if err := filesystem.MkdirAll(ctx, s.Content.FileSystem(), "."); err != nil {
53+
return err
54+
}
4655
}
4756

4857
local := contentfs.NewNamespace(s.Content.FileSystem())
4958

59+
if !s.NoCache {
60+
s.driver = driver.FromFileSystem(s.Content.FileSystem())
61+
}
62+
5063
if s.Remote.Endpoint != "" {
5164
if s.NoCache {
5265
remote, err := contentremote.New(ctx, s.Remote)
@@ -72,7 +85,7 @@ func (s *NamespaceProvider) afterInit(ctx context.Context) error {
7285

7386
logr.FromContext(ctx).
7487
WithValues(slog.String("remote", s.Remote.Endpoint)).
75-
Info("proxy")
88+
Info("proxy with local cache")
7689

7790
return nil
7891
}

pkg/content/api/zz_generated.injectable.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@ import (
88
context "context"
99

1010
content "github.com/octohelm/crkit/pkg/content"
11+
fsdriver "github.com/octohelm/crkit/pkg/content/fs/driver"
1112
)
1213

1314
func (p *NamespaceProvider) InjectContext(ctx context.Context) context.Context {
1415
ctx = p.Content.InjectContext(ctx)
16+
ctx = fsdriver.DriverInjectContext(ctx, p.driver)
1517
ctx = content.NamespaceInjectContext(ctx, p.namespace)
1618

1719
return ctx

pkg/content/blob_store.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,7 @@ type BlobWriter interface {
4242
Cancel(ctx context.Context) error
4343
Commit(ctx context.Context, expected manifestv1.Descriptor) (*manifestv1.Descriptor, error)
4444
}
45+
46+
type DigestIterable interface {
47+
Digests(ctx context.Context) iter.Seq2[digest.Digest, error]
48+
}

0 commit comments

Comments
 (0)