mirror of
https://github.com/strongdm/comply
synced 2024-11-16 21:04:54 +00:00
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package cli
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/strongdm/comply/internal/config"
|
|
"github.com/strongdm/comply/internal/model"
|
|
"github.com/urfave/cli"
|
|
)
|
|
|
|
var procedureCommand = cli.Command{
|
|
Name: "procedure",
|
|
ShortName: "proc",
|
|
Usage: "create ticket by procedure ID",
|
|
ArgsUsage: "procedureID",
|
|
Action: procedureAction,
|
|
Before: beforeAll(projectMustExist, ticketingMustBeConfigured),
|
|
}
|
|
|
|
func procedureAction(c *cli.Context) error {
|
|
procedures, err := model.ReadProcedures()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if c.NArg() != 1 {
|
|
return cli.NewExitError("provide a procedure ID", 1)
|
|
}
|
|
|
|
procedureID := c.Args().First()
|
|
|
|
ts, err := config.Config().TicketSystem()
|
|
if err != nil {
|
|
return cli.NewExitError("error in ticket system configuration", 1)
|
|
}
|
|
|
|
tp := model.GetPlugin(model.TicketSystem(ts))
|
|
|
|
for _, procedure := range procedures {
|
|
if procedure.ID == procedureID {
|
|
err = tp.Create(procedure.NewTicket(), procedure.Labels())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
}
|
|
|
|
return cli.NewExitError(fmt.Sprintf("unknown procedure ID: %s", procedureID), 1)
|
|
}
|