@@ -18,6 +18,7 @@ package create
1818
1919import (
2020 "fmt"
21+ "strings"
2122
2223 "github.com/spf13/cobra"
2324
@@ -84,10 +85,40 @@ func (o *createOptions) trigger(name string, eventSourcesFilter, eventTypesFilte
8485 return err
8586 }
8687 }
87- for _ , et := range eventTypesFilter {
88- if _ , err = o .createTrigger (name , component , tmbroker .FilterExactAttribute ("type" , et )); err != nil {
88+
89+ oldTriggers := o .listTriggers (name + "-" )
90+ for i , et := range eventTypesFilter {
91+ newTrigger := name
92+ if name != "" {
93+ newTrigger = fmt .Sprintf ("%s-%d" , name , i + 1 )
94+ }
95+ if _ , err = o .createTrigger (newTrigger , component , tmbroker .FilterExactAttribute ("type" , et )); err != nil {
96+ return err
97+ }
98+ delete (oldTriggers , newTrigger )
99+ }
100+
101+ for _ , oldTrigger := range oldTriggers {
102+ if err := oldTrigger .RemoveFromLocalConfig (); err != nil {
103+ return err
104+ }
105+ if err := o .Manifest .Remove (oldTrigger .Name , oldTrigger .GetKind ()); err != nil {
89106 return err
90107 }
91108 }
92109 return nil
93110}
111+
112+ func (o * createOptions ) listTriggers (prefix string ) map [string ]* tmbroker.Trigger {
113+ result := make (map [string ]* tmbroker.Trigger , 0 )
114+ for _ , v := range o .Manifest .Objects {
115+ if v .Kind == tmbroker .TriggerKind && strings .HasPrefix (v .Metadata .Name , prefix ) {
116+ trigger , err := tmbroker .NewTrigger (v .Metadata .Name , o .Context , o .ConfigBase , nil , nil )
117+ if err != nil {
118+ continue
119+ }
120+ result [v .Metadata .Name ] = trigger .(* tmbroker.Trigger )
121+ }
122+ }
123+ return result
124+ }
0 commit comments