Modify add command to split the different mechanisms
This commit is contained in:
parent
cac6b047d3
commit
089a61bd41
1 changed files with 79 additions and 29 deletions
108
cmd/add.go
108
cmd/add.go
|
@ -13,25 +13,77 @@ import (
|
||||||
"git.ctrlz.es/mgdelacroix/campaigner/model"
|
"git.ctrlz.es/mgdelacroix/campaigner/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func GrepAddCmd() *cobra.Command {
|
||||||
|
cmd := &cobra.Command{
|
||||||
|
Use: "grep",
|
||||||
|
Short: "generates the tickets reading grep's output from stdin",
|
||||||
|
Long: "Generates tickets for the campaign reading from the standard input the output grep. The grep command must be run with the -n flag",
|
||||||
|
Example: ` grep -nriIF --include \*.go cobra.Command | campaigner add grep`,
|
||||||
|
Args: cobra.NoArgs,
|
||||||
|
Run: grepAddCmdF,
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd.Flags().BoolP("file-only", "f", false, "generates one ticket per file instead of per match")
|
||||||
|
|
||||||
|
return cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
func AgAddCmd() *cobra.Command {
|
||||||
|
cmd := &cobra.Command{
|
||||||
|
Use: "ag",
|
||||||
|
Short: "generates the tickets reading ag's output from stdin",
|
||||||
|
Long: "Generates tickets for the campaign reading from the standard input the output ag",
|
||||||
|
Example: ` ag cobra.Command | campaigner add ag`,
|
||||||
|
Args: cobra.NoArgs,
|
||||||
|
RunE: agAddCmdF,
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd.Flags().BoolP("file-only", "f", false, "generates one ticket per file instead of per match")
|
||||||
|
|
||||||
|
return cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
func GovetAddCmd() *cobra.Command {
|
||||||
|
cmd := &cobra.Command{
|
||||||
|
Use: "govet",
|
||||||
|
Short: "generates the tickets reading govet's output from stdin",
|
||||||
|
Long: "Generates tickets for the campaign reading from the standard input the output grep. The grep command must be run with the -json flag",
|
||||||
|
Example: ` govet -json ./... | campaigner add govet`,
|
||||||
|
Args: cobra.NoArgs,
|
||||||
|
RunE: govetAddCmdF,
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd.Flags().BoolP("file-only", "f", false, "generates one ticket per file instead of per match")
|
||||||
|
|
||||||
|
return cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
func CsvAddCmd() *cobra.Command {
|
||||||
|
cmd := &cobra.Command{
|
||||||
|
Use: "csv",
|
||||||
|
Short: "generates the tickets reading a csv file",
|
||||||
|
Example: ` campaigner add csv --file tickets.csv`,
|
||||||
|
Args: cobra.NoArgs,
|
||||||
|
RunE: csvAddCmdF,
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd.Flags().BoolP("file-only", "f", false, "generates one ticket per file instead of per match")
|
||||||
|
|
||||||
|
return cmd
|
||||||
|
}
|
||||||
|
|
||||||
func AddCmd() *cobra.Command {
|
func AddCmd() *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "add",
|
Use: "add",
|
||||||
Short: "Adds tickets to the campaign from the output of grep/ag/govet",
|
Short: "Adds tickets to the campaign from the output of grep/ag/govet",
|
||||||
Long: `Generates tickets for the campaign reading from the standard input the output of one of the following three commands:
|
|
||||||
- grep (should be run with the -n flag)
|
|
||||||
- ag
|
|
||||||
- govet (should be run with the -json flag)`,
|
|
||||||
Example: ` grep -nriIF --include \*.go cobra.Command | campaigner add --grep
|
|
||||||
ag cobra.Command | campaigner add --ag
|
|
||||||
govet -json ./... | campaigner add --govet`,
|
|
||||||
Args: cobra.NoArgs,
|
|
||||||
RunE: addCmdF,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.Flags().BoolP("ag", "a", false, "generates the tickets reading ag's output from stdin")
|
cmd.AddCommand(
|
||||||
cmd.Flags().BoolP("grep", "g", false, "generates the tickets reading grep's output from stdin")
|
GrepAddCmd(),
|
||||||
cmd.Flags().BoolP("govet", "v", false, "generates the tickets reading govet's output from stdin")
|
AgAddCmd(),
|
||||||
cmd.Flags().BoolP("file-only", "f", false, "generates one ticket per file instead of per match")
|
GovetAddCmd(),
|
||||||
|
CsvAddCmd(),
|
||||||
|
)
|
||||||
|
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
@ -70,23 +122,10 @@ func parseGrep() []*model.Ticket {
|
||||||
return tickets
|
return tickets
|
||||||
}
|
}
|
||||||
|
|
||||||
func addCmdF(cmd *cobra.Command, _ []string) error {
|
func grepAddCmdF(cmd *cobra.Command, _ []string) {
|
||||||
grep, _ := cmd.Flags().GetBool("grep")
|
|
||||||
ag, _ := cmd.Flags().GetBool("ag")
|
|
||||||
govet, _ := cmd.Flags().GetBool("govet")
|
|
||||||
fileOnly, _ := cmd.Flags().GetBool("file-only")
|
fileOnly, _ := cmd.Flags().GetBool("file-only")
|
||||||
|
|
||||||
if !grep && !ag && !govet {
|
tickets := parseGrep()
|
||||||
return fmt.Errorf("one of --grep --ag --govet flags should be active")
|
|
||||||
}
|
|
||||||
|
|
||||||
var tickets []*model.Ticket
|
|
||||||
switch {
|
|
||||||
case grep:
|
|
||||||
tickets = parseGrep()
|
|
||||||
default:
|
|
||||||
return fmt.Errorf("not implemented yet")
|
|
||||||
}
|
|
||||||
|
|
||||||
cmp, err := campaign.Read()
|
cmp, err := campaign.Read()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -99,5 +138,16 @@ func addCmdF(cmd *cobra.Command, _ []string) error {
|
||||||
if err := campaign.Save(cmp); err != nil {
|
if err := campaign.Save(cmp); err != nil {
|
||||||
ErrorAndExit(cmd, err)
|
ErrorAndExit(cmd, err)
|
||||||
}
|
}
|
||||||
return nil
|
}
|
||||||
|
|
||||||
|
func agAddCmdF(_ *cobra.Command, _ []string) error {
|
||||||
|
return fmt.Errorf("not implemented yet")
|
||||||
|
}
|
||||||
|
|
||||||
|
func govetAddCmdF(_ *cobra.Command, _ []string) error {
|
||||||
|
return fmt.Errorf("not implemented yet")
|
||||||
|
}
|
||||||
|
|
||||||
|
func csvAddCmdF(cmd *cobra.Command, _ []string) error {
|
||||||
|
return fmt.Errorf("not implemented yet")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue