Skip to content

Commit 8408beb

Browse files
authored
feat: explicit optional compression in dropgz (#3648)
Signed-off-by: Evan Baker <[email protected]>
1 parent f617f1f commit 8408beb

File tree

3 files changed

+30
-26
lines changed

3 files changed

+30
-26
lines changed

dropgz/README.md

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

dropgz/cmd/payload.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ import (
1010
"go.uber.org/zap"
1111
)
1212

13+
var (
14+
compression embed.Compression
15+
skipVerify bool
16+
outs []string
17+
)
18+
1319
// list subcommand
1420
var list = &cobra.Command{
1521
Use: "list",
@@ -32,7 +38,7 @@ func checksum(srcs, dests []string) error {
3238
if len(srcs) != len(dests) {
3339
return errors.Wrapf(embed.ErrArgsMismatched, "%d and %d", len(srcs), len(dests))
3440
}
35-
rc, err := embed.Extract("sum.txt")
41+
rc, err := embed.Extract("sum.txt", compression)
3642
if err != nil {
3743
return errors.Wrap(err, "failed to extract checksum file")
3844
}
@@ -54,11 +60,6 @@ func checksum(srcs, dests []string) error {
5460
return nil
5561
}
5662

57-
var (
58-
skipVerify bool
59-
outs []string
60-
)
61-
6263
// deploy subcommand
6364
var deploy = &cobra.Command{
6465
Use: "deploy",
@@ -73,7 +74,7 @@ var deploy = &cobra.Command{
7374
return errors.Wrapf(embed.ErrArgsMismatched, "%d files, %d outputs", len(srcs), len(outs))
7475
}
7576
log := z.With(zap.Strings("sources", srcs), zap.Strings("outputs", outs), zap.String("cmd", "deploy"))
76-
if err := embed.Deploy(log, srcs, outs); err != nil {
77+
if err := embed.Deploy(log, srcs, outs, compression); err != nil {
7778
return errors.Wrapf(err, "failed to deploy %s", srcs)
7879
}
7980
log.Info("successfully wrote files")
@@ -120,6 +121,7 @@ func init() {
120121
root.AddCommand(verify)
121122

122123
deploy.ValidArgs, _ = embed.Contents() // setting this after the command is initialized is required
124+
deploy.Flags().StringVarP((*string)(&compression), "compression", "c", "none", "compression type (default none)")
123125
deploy.Flags().BoolVar(&skipVerify, "skip-verify", false, "set to disable checksum validation")
124126
deploy.Flags().StringSliceVarP(&outs, "output", "o", []string{}, "output file path")
125127
root.AddCommand(deploy)

dropgz/pkg/embed/payload.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ const (
2121

2222
var ErrArgsMismatched = errors.New("mismatched argument count")
2323

24+
type Compression string
25+
26+
const (
27+
None Compression = "none"
28+
Gzip Compression = "gzip"
29+
)
30+
2431
// embedfs contains the embedded files for deployment, as a read-only FileSystem containing only "embedfs/".
2532
//
2633
//nolint:typecheck // dir is populated at build.
@@ -70,20 +77,25 @@ func (c *compoundReadCloser) Close() error {
7077
return nil
7178
}
7279

73-
func Extract(p string) (*compoundReadCloser, error) {
80+
func Extract(p string, compression Compression) (*compoundReadCloser, error) {
7481
f, err := embedfs.Open(path.Join(cwd, p))
7582
if err != nil {
7683
return nil, errors.Wrapf(err, "failed to open file %s", p)
7784
}
78-
r, err := gzip.NewReader(bufio.NewReader(f))
79-
if err != nil {
80-
return nil, errors.Wrap(err, "failed to build reader")
85+
var rc io.ReadCloser = f
86+
switch compression {
87+
case Gzip:
88+
rc, err = gzip.NewReader(bufio.NewReader(f))
89+
if err != nil {
90+
return nil, errors.Wrap(err, "failed to build reader")
91+
}
92+
default:
8193
}
82-
return &compoundReadCloser{closer: f, readcloser: r}, nil
94+
return &compoundReadCloser{closer: f, readcloser: rc}, nil
8395
}
8496

85-
func deploy(src, dest string) error {
86-
rc, err := Extract(src)
97+
func deploy(src, dest string, compression Compression) error {
98+
rc, err := Extract(src, compression)
8799
if err != nil {
88100
return err
89101
}
@@ -104,14 +116,14 @@ func deploy(src, dest string) error {
104116
return errors.Wrapf(err, "failed to copy %s to %s", src, dest)
105117
}
106118

107-
func Deploy(log *zap.Logger, srcs, dests []string) error {
119+
func Deploy(log *zap.Logger, srcs, dests []string, compression Compression) error {
108120
if len(srcs) != len(dests) {
109121
return errors.Wrapf(ErrArgsMismatched, "%d and %d", len(srcs), len(dests))
110122
}
111123
for i := range srcs {
112124
src := srcs[i]
113125
dest := dests[i]
114-
if err := deploy(src, dest); err != nil {
126+
if err := deploy(src, dest, compression); err != nil {
115127
return err
116128
}
117129
log.Info("wrote file", zap.String("src", src), zap.String("dest", dest))

0 commit comments

Comments
 (0)