bitbucket.org/Aishee/synsec@v0.0.0-20210414005726-236fc01a153d/cmd/synsec-cli/postoverflows.go (about) 1 package main 2 3 import ( 4 "fmt" 5 6 "bitbucket.org/Aishee/synsec/pkg/cwhub" 7 8 log "github.com/sirupsen/logrus" 9 10 "github.com/spf13/cobra" 11 ) 12 13 func NewPostOverflowsCmd() *cobra.Command { 14 var cmdPostOverflows = &cobra.Command{ 15 Use: "postoverflows [action] [config]", 16 Short: "Install/Remove/Upgrade/Inspect postoverflow(s) from hub", 17 Example: `ccscli postoverflows install breakteam/cdn-whitelist 18 ccscli postoverflows inspect breakteam/cdn-whitelist 19 ccscli postoverflows upgrade breakteam/cdn-whitelist 20 ccscli postoverflows list 21 ccscli postoverflows remove breakteam/cdn-whitelist`, 22 Args: cobra.MinimumNArgs(1), 23 PersistentPreRunE: func(cmd *cobra.Command, args []string) error { 24 if err := csConfig.LoadHub(); err != nil { 25 log.Fatalf(err.Error()) 26 } 27 if csConfig.Hub == nil { 28 return fmt.Errorf("you must configure cli before interacting with hub") 29 } 30 31 if err := setHubBranch(); err != nil { 32 return fmt.Errorf("error while setting hub branch: %s", err) 33 } 34 35 if err := cwhub.GetHubIdx(csConfig.Hub); err != nil { 36 log.Fatalf("Failed to get Hub index : %v", err) 37 log.Infoln("Run 'sudo ccscli hub update' to get the hub index") 38 } 39 return nil 40 }, 41 PersistentPostRun: func(cmd *cobra.Command, args []string) { 42 if cmd.Name() == "inspect" || cmd.Name() == "list" { 43 return 44 } 45 log.Infof(ReloadMessage()) 46 }, 47 } 48 49 var cmdPostOverflowsInstall = &cobra.Command{ 50 Use: "install [config]", 51 Short: "Install given postoverflow(s)", 52 Long: `Fetch and install given postoverflow(s) from hub`, 53 Example: `ccscli postoverflows install synsec/xxx synsec/xyz`, 54 Args: cobra.MinimumNArgs(1), 55 Run: func(cmd *cobra.Command, args []string) { 56 for _, name := range args { 57 InstallItem(name, cwhub.PARSERS_OVFLW, forceAction) 58 } 59 }, 60 } 61 cmdPostOverflowsInstall.PersistentFlags().BoolVarP(&downloadOnly, "download-only", "d", false, "Only download packages, don't enable") 62 cmdPostOverflowsInstall.PersistentFlags().BoolVar(&forceAction, "force", false, "Force install : Overwrite tainted and outdated files") 63 cmdPostOverflows.AddCommand(cmdPostOverflowsInstall) 64 65 var cmdPostOverflowsRemove = &cobra.Command{ 66 Use: "remove [config]", 67 Short: "Remove given postoverflow(s)", 68 Long: `remove given postoverflow(s)`, 69 Example: `ccscli postoverflows remove synsec/xxx synsec/xyz`, 70 Args: cobra.MinimumNArgs(1), 71 Run: func(cmd *cobra.Command, args []string) { 72 if all { 73 RemoveMany(cwhub.PARSERS_OVFLW, "") 74 } else { 75 for _, name := range args { 76 RemoveMany(cwhub.PARSERS_OVFLW, name) 77 } 78 } 79 }, 80 } 81 cmdPostOverflowsRemove.PersistentFlags().BoolVar(&purge, "purge", false, "Delete source file too") 82 cmdPostOverflowsRemove.PersistentFlags().BoolVar(&forceAction, "force", false, "Force remove : Remove tainted and outdated files") 83 cmdPostOverflowsRemove.PersistentFlags().BoolVar(&all, "all", false, "Delete all the postoverflows") 84 cmdPostOverflows.AddCommand(cmdPostOverflowsRemove) 85 86 var cmdPostOverflowsUpgrade = &cobra.Command{ 87 Use: "upgrade [config]", 88 Short: "Upgrade given postoverflow(s)", 89 Long: `Fetch and Upgrade given postoverflow(s) from hub`, 90 Example: `ccscli postoverflows upgrade synsec/xxx synsec/xyz`, 91 Run: func(cmd *cobra.Command, args []string) { 92 if all { 93 UpgradeConfig(cwhub.PARSERS_OVFLW, "", forceAction) 94 } else { 95 if len(args) == 0 { 96 log.Fatalf("no target postoverflow to upgrade") 97 } 98 for _, name := range args { 99 UpgradeConfig(cwhub.PARSERS_OVFLW, name, forceAction) 100 } 101 } 102 }, 103 } 104 cmdPostOverflowsUpgrade.PersistentFlags().BoolVarP(&all, "all", "a", false, "Upgrade all the postoverflows") 105 cmdPostOverflowsUpgrade.PersistentFlags().BoolVar(&forceAction, "force", false, "Force upgrade : Overwrite tainted and outdated files") 106 cmdPostOverflows.AddCommand(cmdPostOverflowsUpgrade) 107 108 var cmdPostOverflowsInspect = &cobra.Command{ 109 Use: "inspect [config]", 110 Short: "Inspect given postoverflow", 111 Long: `Inspect given postoverflow`, 112 Example: `ccscli postoverflows inspect synsec/xxx synsec/xyz`, 113 Args: cobra.MinimumNArgs(1), 114 Run: func(cmd *cobra.Command, args []string) { 115 InspectItem(args[0], cwhub.PARSERS_OVFLW) 116 }, 117 } 118 cmdPostOverflows.AddCommand(cmdPostOverflowsInspect) 119 120 var cmdPostOverflowsList = &cobra.Command{ 121 Use: "list [config]", 122 Short: "List all postoverflows or given one", 123 Long: `List all postoverflows or given one`, 124 Example: `ccscli postoverflows list 125 ccscli postoverflows list breakteam/xxx`, 126 Run: func(cmd *cobra.Command, args []string) { 127 ListItem(cwhub.PARSERS_OVFLW, args) 128 }, 129 } 130 cmdPostOverflowsList.PersistentFlags().BoolVarP(&all, "all", "a", false, "List as well disabled items") 131 cmdPostOverflows.AddCommand(cmdPostOverflowsList) 132 133 return cmdPostOverflows 134 }