Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions archive/cmd/archive/main.go

This file was deleted.

8 changes: 0 additions & 8 deletions archive/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ go 1.24.4
require (
github.com/99designs/gqlgen v0.17.75
github.com/Khan/genqlient v0.8.1
github.com/containerd/platforms v0.2.1
github.com/spf13/cobra v1.9.1
github.com/vektah/gqlparser/v2 v2.5.28
github.com/z5labs/sdk-go v0.2.0
go.opentelemetry.io/otel v1.36.0
Expand All @@ -30,17 +28,11 @@ require (
require (
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
github.com/cenkalti/backoff/v5 v5.0.2 // indirect
github.com/containerd/log v0.1.0 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0-rc5 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/sosodev/duration v1.3.1 // indirect
github.com/spf13/pflag v1.0.6 // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 // indirect
golang.org/x/net v0.41.0 // indirect
Expand Down
24 changes: 0 additions & 24 deletions archive/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,6 @@ github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK3
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8=
github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A=
github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw=
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
Expand All @@ -29,27 +23,12 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI=
github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq4=
github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg=
github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/vektah/gqlparser/v2 v2.5.28 h1:bIulcl3LF69ba6EiZVGD88y4MkM+Jxrf3P2MX8xLRkY=
Expand Down Expand Up @@ -96,7 +75,6 @@ golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
Expand All @@ -109,7 +87,5 @@ google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok=
google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc=
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
43 changes: 0 additions & 43 deletions archive/internal/archive/archive.go

This file was deleted.

56 changes: 17 additions & 39 deletions archive/internal/archive/tar.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,63 +8,41 @@ package archive
import (
"archive/tar"
"compress/gzip"
"context"
"io"
"log/slog"
"os"
"path"

"github.com/spf13/cobra"
"dagger/archive/internal/dagger"

"github.com/z5labs/sdk-go/try"
)

func tarCommand() *cobra.Command {
cmd := &cobra.Command{
Use: "tar",
Short: "Utilities for working with TAR archives.",
}

cmd.AddCommand(
tarExtractCommand(),
)

return cmd
}

func tarExtractCommand() *cobra.Command {
cmd := &cobra.Command{
Use: "extract FILE DIR",
Short: "Extract a TAR archive to a specified directory.",
Args: cobra.ExactArgs(2),
RunE: extractTar,
}

cmd.Flags().Bool("gzip", false, "Enable gzip decompression.")

return cmd
}
func ExtractTar(ctx context.Context, filename, out string, isGziped bool) error {
_, span := dagger.Tracer().Start(ctx, "archive.ExtractTar")
defer span.End()

func extractTar(cmd *cobra.Command, args []string) error {
log := slog.New(slog.NewJSONHandler(cmd.ErrOrStderr(), &slog.HandlerOptions{}))
log := slog.New(slog.NewJSONHandler(os.Stderr, &slog.HandlerOptions{}))

err := os.MkdirAll(args[1], os.ModeDir)
err := os.MkdirAll(out, os.ModeDir)
if err != nil {
log.ErrorContext(cmd.Context(), "failed to create output directory", slog.Any("error", err))
log.ErrorContext(ctx, "failed to create output directory", slog.Any("error", err))
return err
}

f, err := os.Open(args[0])
f, err := os.Open(filename)
if err != nil {
log.ErrorContext(cmd.Context(), "failed to open file", slog.Any("error", err))
log.ErrorContext(ctx, "failed to open file", slog.Any("error", err))
return err
}
defer f.Close()

var stream io.Reader = f
isGziped, _ := cmd.Flags().GetBool("gzip")
if isGziped {
stream, err = gzip.NewReader(stream)
if err != nil {
log.ErrorContext(cmd.Context(), "failed to create gzip reader", slog.Any("error", err))
log.ErrorContext(ctx, "failed to create gzip reader", slog.Any("error", err))
return err
}
}
Expand All @@ -76,7 +54,7 @@ func extractTar(cmd *cobra.Command, args []string) error {
return nil
}
if err != nil {
log.ErrorContext(cmd.Context(), "failed to get header", slog.Any("error", err))
log.ErrorContext(ctx, "failed to get header", slog.Any("error", err))
return err
}

Expand All @@ -86,21 +64,21 @@ func extractTar(cmd *cobra.Command, args []string) error {

dir, _ := path.Split(h.Name)
if dir != "" {
err = os.MkdirAll(path.Join(args[1], dir), os.ModeDir)
err = os.MkdirAll(path.Join(out, dir), os.ModeDir)
if err != nil {
log.ErrorContext(cmd.Context(), "failed to create output sub dir", slog.Any("error", err))
log.ErrorContext(ctx, "failed to create output sub dir", slog.Any("error", err))
return err
}
}

f, err := os.Create(path.Join(args[1], h.Name))
f, err := os.Create(path.Join(out, h.Name))
if err != nil {
return err
}

err = copyTarFile(f, tr)
if err != nil {
log.ErrorContext(cmd.Context(), "failed to write tar content to output directory", slog.Any("error", err))
log.ErrorContext(ctx, "failed to write tar content to output directory", slog.Any("error", err))
return err
}
}
Expand Down
53 changes: 17 additions & 36 deletions archive/internal/archive/zip.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,51 +7,32 @@ package archive

import (
"archive/zip"
"context"
"io"
"log/slog"
"os"
"path"

"github.com/spf13/cobra"
"dagger/archive/internal/dagger"

"github.com/z5labs/sdk-go/try"
)

func zipCommand() *cobra.Command {
cmd := &cobra.Command{
Use: "zip",
Short: "Utilities for working with ZIP archives.",
}

cmd.AddCommand(
zipExtractCommand(),
)

return cmd
}

func zipExtractCommand() *cobra.Command {
cmd := &cobra.Command{
Use: "extract FILE DIR",
Short: "Extract a ZIP archive to a specified directory.",
Args: cobra.ExactArgs(2),
RunE: extractZip,
}

return cmd
}
func ExtractZip(ctx context.Context, filename, out string) error {
_, span := dagger.Tracer().Start(ctx, "archive.ExtractZip")
defer span.End()

func extractZip(cmd *cobra.Command, args []string) error {
log := slog.New(slog.NewJSONHandler(cmd.ErrOrStderr(), &slog.HandlerOptions{}))
log := slog.New(slog.NewJSONHandler(os.Stderr, &slog.HandlerOptions{}))

err := os.MkdirAll(args[1], os.ModeDir)
err := os.MkdirAll(out, os.ModeDir)
if err != nil {
log.ErrorContext(cmd.Context(), "failed to create output directory", slog.Any("error", err))
log.ErrorContext(ctx, "failed to create output directory", slog.Any("error", err))
return err
}

zr, err := zip.OpenReader(args[0])
zr, err := zip.OpenReader(filename)
if err != nil {
log.ErrorContext(cmd.Context(), "failed to open file", slog.Any("error", err))
log.ErrorContext(ctx, "failed to open file", slog.Any("error", err))
return err
}
defer zr.Close()
Expand All @@ -61,9 +42,9 @@ func extractZip(cmd *cobra.Command, args []string) error {
continue
}

err = os.MkdirAll(path.Join(args[1], zipFile.Name), os.ModeDir)
err = os.MkdirAll(path.Join(out, zipFile.Name), os.ModeDir)
if err != nil {
log.ErrorContext(cmd.Context(), "failed to create output dir", slog.Any("error", err))
log.ErrorContext(ctx, "failed to create output dir", slog.Any("error", err))
return err
}
}
Expand All @@ -73,21 +54,21 @@ func extractZip(cmd *cobra.Command, args []string) error {
continue
}

out, err := os.Create(path.Join(args[1], zipFile.Name))
out, err := os.Create(path.Join(out, zipFile.Name))
if err != nil {
log.ErrorContext(cmd.Context(), "failed to create output file", slog.Any("error", err))
log.ErrorContext(ctx, "failed to create output file", slog.Any("error", err))
return err
}

rc, err := zipFile.Open()
if err != nil {
log.ErrorContext(cmd.Context(), "failed to open zip content", slog.Any("error", err))
log.ErrorContext(ctx, "failed to open zip content", slog.Any("error", err))
return err
}

err = copyZipFile(out, rc)
if err != nil {
log.ErrorContext(cmd.Context(), "failed to write zip content to output directory", slog.Any("error", err))
log.ErrorContext(ctx, "failed to write zip content to output directory", slog.Any("error", err))
return err
}
}
Expand Down
26 changes: 3 additions & 23 deletions archive/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,10 @@ package main

import (
"context"

"dagger/archive/internal/dagger"

"github.com/containerd/platforms"
)

type Archive struct {
// +private
Container *dagger.Container
}

func New(ctx context.Context) (*Archive, error) {
ctrs, err := dag.Go().
Module(dag.CurrentModule().Source()).
Library().
Application("./cmd/archive").
Build(ctx, dagger.GoApplicationBuildOpts{
Platforms: []dagger.Platform{dagger.Platform(platforms.DefaultString())},
})
if err != nil {
return nil, err
}
type Archive struct{}

return &Archive{
Container: &ctrs[0],
}, nil
func New(ctx context.Context) *Archive {
return &Archive{}
}
Loading