()
| 11 | ) |
| 12 | |
| 13 | func 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 | } |
no test coverage detected