MCPcopy Create free account
hub / github.com/linuxkit/linuxkit / pkgBuilderCmd

Function pkgBuilderCmd

src/cmd/linuxkit/pkg_builder.go:13–64  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

11)
12
13func pkgBuilderCmd() *cobra.Command {
14 var (
15 builders string
16 platforms string
17 builderImage string
18 builderConfigPath string
19 )
20 cmd := &cobra.Command{
21 Use: "builder",
22 Short: "manage the pkg builder",
23 Long: `Manage the pkg builder. This normally is a container.`,
24 Args: cobra.ExactArgs(1),
25 RunE: func(cmd *cobra.Command, args []string) error {
26 command := args[0]
27 verbose := cmd.Flags().Lookup("verbose").Value.String() == "true"
28 // build the builders map
29 buildersMap := make(map[string]string)
30 // look for builders env var
31 buildersMap, err := buildPlatformBuildersMap(os.Getenv(buildersEnvVar), buildersMap)
32 if err != nil {
33 return fmt.Errorf("invalid environment variable %s: %w", buildersEnvVar, err)
34 }
35 // any CLI options override env var
36 buildersMap, err = buildPlatformBuildersMap(builders, buildersMap)
37 if err != nil {
38 return fmt.Errorf("invalid --builders flag: %w", err)
39 }
40
41 platformsToClean := strings.Split(platforms, ",")
42 switch command {
43 case "du":
44 if err := pkglib.DiskUsage(buildersMap, builderImage, builderConfigPath, platformsToClean, verbose); err != nil {
45 return fmt.Errorf("unable to print disk usage of builder: %w", err)
46 }
47 case "prune":
48 if err := pkglib.PruneBuilder(buildersMap, builderImage, builderConfigPath, platformsToClean, verbose); err != nil {
49 return fmt.Errorf("unable to prune builder: %w", err)
50 }
51 default:
52 return fmt.Errorf("unexpected command %s", command)
53 }
54 return nil
55 },
56 }
57
58 cmd.PersistentFlags().StringVar(&builders, "builders", "", "Which builders to use for which platforms, e.g. linux/arm64=docker-context-arm64, overrides defaults and environment variables, see https://github.com/linuxkit/linuxkit/blob/master/docs/packages.md#Providing-native-builder-nodes")
59 cmd.PersistentFlags().StringVar(&platforms, "platforms", fmt.Sprintf("linux/%s", runtime.GOARCH), "Which platforms we built images for")
60 cmd.PersistentFlags().StringVar(&builderImage, "builder-image", defaultBuilderImage, "buildkit builder container image to use")
61 cmd.Flags().StringVar(&builderConfigPath, "builder-config", "", "path to buildkit builder config.toml file to use, overrides the default config.toml in the builder image; USE WITH CAUTION")
62
63 return cmd
64}

Callers 1

pkgCmdFunction · 0.85

Calls 2

buildPlatformBuildersMapFunction · 0.85
StringMethod · 0.65

Tested by

no test coverage detected