Skip to content

Commit

Permalink
Add uninstall command
Browse files Browse the repository at this point in the history
Signed-off-by: Lou Marvin Caraig <[email protected]>
  • Loading branch information
se7entyse7en committed Jun 27, 2020
1 parent b342ff6 commit ea7c73e
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 0 deletions.
9 changes: 9 additions & 0 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,15 @@ func getStringArg(cmd *cobra.Command, argName string) (string, error) {
return value, nil
}

func getBoolArg(cmd *cobra.Command, argName string) (bool, error) {
value, err := cmd.Flags().GetBool(argName)
if err != nil {
return false, fmt.Errorf("cannot read %s: %w", argName, err)
}

return value, nil
}

func init() {
rootCmd.PersistentFlags().StringP("log-level", "l", "info", "Log level")
}
60 changes: 60 additions & 0 deletions cmd/uninstall.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package cmd

import (
"github.com/se7entyse7en/pydockenv/internal/dependency"
"github.com/se7entyse7en/pydockenv/log"
"github.com/sirupsen/logrus"
"github.com/spf13/cobra"
)

var uninstallCmd = &cobra.Command{
Use: "uninstall [package_1] [package_2] ... [package_n]",
Short: "unInstall packages from args",
Args: cobra.ExactArgs(1),
Run: func(cmd *cobra.Command, args []string) {
logger := log.Logger
err := log.SetupLogger(cmd)
if err != nil {
logger.WithError(err).Fatal("Cannot setup logger")
}

cmdArgs, err := parseUninstallArgs(cmd, args)
if err != nil {
logger.WithError(err).Fatal("Cannot parse arguments")
}

ctxLogger := logger.WithFields(logrus.Fields{
"packages": cmdArgs.Packages,
})
ctxLogger.Info("Uninstalling packages...")

if err := dependency.Uninstall(&dependency.Packages{
RawDependencies: cmdArgs.Packages},
cmdArgs.Yes,
); err != nil {
logger.WithError(err).Fatal("Cannot uninstall packages")
}

ctxLogger.Info("Packages uninstalled!")
},
}

func parseUninstallArgs(cmd *cobra.Command, args []string) (*uninstallArgs, error) {
yes, err := getBoolArg(cmd, "yes")
if err != nil {
return nil, err
}

return &uninstallArgs{Packages: args, Yes: yes}, nil
}

type uninstallArgs struct {
Packages []string
Yes bool
}

func init() {
rootCmd.AddCommand(uninstallCmd)

uninstallCmd.Flags().BoolP("yes", "y", false, "Don't ask for confirmation")
}

0 comments on commit ea7c73e

Please sign in to comment.