diff --git a/internal/cli/procedure.go b/internal/cli/procedure.go index 4e7acd4..bf2b4a6 100644 --- a/internal/cli/procedure.go +++ b/internal/cli/procedure.go @@ -14,7 +14,7 @@ var procedureCommand = cli.Command{ Usage: "create ticket by procedure ID", ArgsUsage: "procedureID", Action: procedureAction, - Before: projectMustExist, + Before: beforeAll(projectMustExist, ticketingMustBeConfigured), } func procedureAction(c *cli.Context) error { diff --git a/internal/model/plugin.go b/internal/model/plugin.go index 5d2fd53..3bbfdc3 100644 --- a/internal/model/plugin.go +++ b/internal/model/plugin.go @@ -50,6 +50,10 @@ func GetPlugin(ts TicketSystem) TicketPlugin { tsPluginsMu.Lock() defer tsPluginsMu.Unlock() + if ts == NoTickets { + return &noopTicketSystem{} + } + tp, ok := tsPlugins[ts] if !ok { panic("Unknown ticket system: " + ts) @@ -100,3 +104,36 @@ func Register(ts TicketSystem, plugin TicketPlugin) { tsPlugins[ts] = plugin } + +type noopTicketSystem struct{} + +func (*noopTicketSystem) Get(ID string) (*Ticket, error) { + return nil, nil +} +func (*noopTicketSystem) FindOpen() ([]*Ticket, error) { + return []*Ticket{}, nil +} +func (*noopTicketSystem) FindByTag(name, value string) ([]*Ticket, error) { + return []*Ticket{}, nil +} +func (*noopTicketSystem) FindByTagName(name string) ([]*Ticket, error) { + return []*Ticket{}, nil +} +func (*noopTicketSystem) Create(ticket *Ticket, labels []string) error { + return nil +} +func (*noopTicketSystem) Configure(map[string]interface{}) error { + return nil +} +func (*noopTicketSystem) Prompts() map[string]string { + return make(map[string]string) +} +func (*noopTicketSystem) Links() TicketLinks { + return TicketLinks{} +} +func (*noopTicketSystem) LinkFor(ticket *Ticket) string { + return "" +} +func (*noopTicketSystem) Configured() bool { + return false +}