package cmd import ( "fmt" "os" "path/filepath" "git.cryptic.systems/volker.raschek/civ/pkg/config" "git.cryptic.systems/volker.raschek/civ/pkg/docker" "git.cryptic.systems/volker.raschek/civ/pkg/usecases" "git.cryptic.systems/volker.raschek/dockerutils" "github.com/spf13/cobra" ) // Execute a func Execute(version string) error { rootCmd := &cobra.Command{ Use: "civ", Short: "go container label checker", Version: version, Args: cobra.MinimumNArgs(1), RunE: runE, } err := rootCmd.Execute() if err != nil { return err } return nil } func runE(cmd *cobra.Command, args []string) error { readConfigFile := args[0] var writeConfigFile string if len(args) == 2 { writeConfigFile = args[1] } else { writeConfigFile = fmt.Sprintf("config_result%s", filepath.Ext(readConfigFile)) } if _, err := os.Stat(readConfigFile); os.IsNotExist(err) { return err } fileReader := config.NewFileReader(readConfigFile) cnf, err := fileReader.ReadFile() if err != nil { return err } dockerClient, err := dockerutils.New() if err != nil { return err } dockerRuntime, err := docker.NewRuntime(dockerClient) if err != nil { return err } labelVerifier, err := usecases.NewLabelVerifier(cnf, dockerRuntime) if err != nil { return err } err = labelVerifier.Run(cmd.Context()) if err != nil { return err } fileWriter := config.NewFileWriter(writeConfigFile) err = fileWriter.WriteFile(cnf) if err != nil { return err } return nil }