package main import ( "context" "docker-save/internal/docker" "log" "git.trj.tw/golang/utils" "github.com/spf13/cobra" ) var rootCmd *cobra.Command func main() { var outputPath string var imageName string var tarName string var doPull bool var rm bool rootCmd = &cobra.Command{ Use: "docker-save", Short: "docker-save is a tool to save docker images to tarballs", Run: func(cmd *cobra.Command, args []string) { outputPath = utils.ParsePath(outputPath) if !utils.CheckExists(outputPath, true) || !utils.IsDir(outputPath) { log.Fatal("output path is not a directory") } ctx := context.Background() if err := docker.SaveImageTar(ctx, imageName, outputPath, tarName, doPull, rm); err != nil { log.Fatal(err) } }, } rootCmd.Flags().StringVarP(&outputPath, "output", "o", "", "output path") rootCmd.Flags().StringVarP(&imageName, "image", "i", "", "image name") rootCmd.Flags().StringVarP(&tarName, "name", "n", "", "tar name") rootCmd.Flags().BoolVarP(&doPull, "pull", "p", false, "pull image") rootCmd.Flags().BoolVarP(&rm, "rm", "", false, "delete image after save") rootCmd.MarkFlagRequired("image") rootCmd.MarkFlagRequired("output") if err := rootCmd.Execute(); err != nil { log.Fatal(err) } }