@@ -11,26 +11,27 @@ import (
11
11
"os"
12
12
"path/filepath"
13
13
"regexp"
14
+ "runtime"
14
15
"strings"
15
16
17
+ "github.com/AlecAivazis/survey/v2"
18
+ "github.com/defenseunicorns/pkg/helpers/v2"
19
+ "github.com/spf13/cobra"
20
+ "github.com/spf13/viper"
21
+ "oras.land/oras-go/v2/registry"
22
+
16
23
"github.com/zarf-dev/zarf/src/cmd/common"
24
+ "github.com/zarf-dev/zarf/src/config"
17
25
"github.com/zarf-dev/zarf/src/config/lang"
26
+ "github.com/zarf-dev/zarf/src/internal/dns"
18
27
"github.com/zarf-dev/zarf/src/internal/packager2"
28
+ "github.com/zarf-dev/zarf/src/pkg/cluster"
19
29
"github.com/zarf-dev/zarf/src/pkg/lint"
20
30
"github.com/zarf-dev/zarf/src/pkg/message"
31
+ "github.com/zarf-dev/zarf/src/pkg/packager"
21
32
"github.com/zarf-dev/zarf/src/pkg/packager/filters"
22
33
"github.com/zarf-dev/zarf/src/pkg/packager/sources"
23
34
"github.com/zarf-dev/zarf/src/types"
24
-
25
- "oras.land/oras-go/v2/registry"
26
-
27
- "github.com/AlecAivazis/survey/v2"
28
- "github.com/defenseunicorns/pkg/helpers/v2"
29
- "github.com/spf13/cobra"
30
- "github.com/spf13/viper"
31
- "github.com/zarf-dev/zarf/src/config"
32
- "github.com/zarf-dev/zarf/src/pkg/cluster"
33
- "github.com/zarf-dev/zarf/src/pkg/packager"
34
35
)
35
36
36
37
var packageCmd = & cobra.Command {
@@ -128,18 +129,47 @@ var packageMirrorCmd = &cobra.Command{
128
129
}
129
130
},
130
131
RunE : func (cmd * cobra.Command , args []string ) error {
131
- packageSource , err := choosePackage (args )
132
+ var c * cluster.Cluster
133
+ if dns .IsServiceURL (pkgConfig .InitOpts .RegistryInfo .Address ) || dns .IsServiceURL (pkgConfig .InitOpts .GitServer .Address ) {
134
+ var err error
135
+ c , err = cluster .NewCluster ()
136
+ if err != nil {
137
+ return err
138
+ }
139
+ }
140
+ src , err := choosePackage (args )
132
141
if err != nil {
133
142
return err
134
143
}
135
- pkgConfig .PkgOpts .PackageSource = packageSource
136
- pkgClient , err := packager .New (& pkgConfig )
144
+ filter := filters .Combine (
145
+ filters .ByLocalOS (runtime .GOOS ),
146
+ filters .BySelectState (pkgConfig .PkgOpts .OptionalComponents ),
147
+ )
148
+
149
+ loadOpt := packager2.LoadOptions {
150
+ Source : src ,
151
+ Shasum : pkgConfig .PkgOpts .Shasum ,
152
+ PublicKeyPath : pkgConfig .PkgOpts .PublicKeyPath ,
153
+ SkipSignatureValidation : pkgConfig .PkgOpts .SkipSignatureValidation ,
154
+ Filter : filter ,
155
+ }
156
+ pkgPaths , err := packager2 .LoadPackage (cmd .Context (), loadOpt )
137
157
if err != nil {
138
158
return err
139
159
}
140
- defer pkgClient .ClearTempPaths ()
141
- if err := pkgClient .Mirror (cmd .Context ()); err != nil {
142
- return fmt .Errorf ("failed to mirror package: %w" , err )
160
+ defer os .RemoveAll (pkgPaths .Base )
161
+ mirrorOpt := packager2.MirrorOptions {
162
+ Cluster : c ,
163
+ PackagePaths : * pkgPaths ,
164
+ Filter : filter ,
165
+ RegistryInfo : pkgConfig .InitOpts .RegistryInfo ,
166
+ GitInfo : pkgConfig .InitOpts .GitServer ,
167
+ NoImageChecksum : pkgConfig .MirrorOpts .NoImgChecksum ,
168
+ Retries : pkgConfig .PkgOpts .Retries ,
169
+ }
170
+ err = packager2 .Mirror (cmd .Context (), mirrorOpt )
171
+ if err != nil {
172
+ return err
143
173
}
144
174
return nil
145
175
},
@@ -482,6 +512,7 @@ func bindMirrorFlags(v *viper.Viper) {
482
512
// Always require confirm flag (no viper)
483
513
mirrorFlags .BoolVar (& config .CommonOptions .Confirm , "confirm" , false , lang .CmdPackageDeployFlagConfirm )
484
514
515
+ mirrorFlags .StringVar (& pkgConfig .PkgOpts .Shasum , "shasum" , "" , lang .CmdPackagePullFlagShasum )
485
516
mirrorFlags .BoolVar (& pkgConfig .MirrorOpts .NoImgChecksum , "no-img-checksum" , false , lang .CmdPackageMirrorFlagNoChecksum )
486
517
mirrorFlags .BoolVar (& pkgConfig .PkgOpts .SkipSignatureValidation , "skip-signature-validation" , false , lang .CmdPackageFlagSkipSignatureValidation )
487
518
0 commit comments