@@ -39,10 +39,9 @@ func NewCmdCronList() *cobra.Command {
3939 }
4040
4141 cmd := & cobra.Command {
42- Use : "list" ,
43- Aliases : []string {"cron" },
44- Short : "List cron jobs" ,
45- ValidArgsFunction : completeApp ,
42+ Use : "list" ,
43+ Aliases : []string {"cron" },
44+ Short : "List cron jobs" ,
4645 RunE : func (cmd * cobra.Command , args []string ) error {
4746 var crons []CronItem
4847 apps , err := app .LookupApps (k .String ("dir" ))
@@ -127,6 +126,44 @@ func NewCmdCronList() *cobra.Command {
127126 return cmd
128127}
129128
129+ func NewCmdCronTrigger () * cobra.Command {
130+ var flags struct {
131+ app string
132+ }
133+
134+ cmd := & cobra.Command {
135+ Use : "trigger <name>" ,
136+ Args : cobra .ExactArgs (1 ),
137+ RunE : func (cmd * cobra.Command , args []string ) error {
138+ a , err := app .LoadApp (flags .app , k .String ("dir" ), k .String ("domain" ))
139+ if err != nil {
140+ return ExitError {1 }
141+ }
142+
143+ var job * app.CronJob
144+ for _ , j := range a .Config .Crons {
145+ if j .Name == args [0 ] {
146+ job = & j
147+ break
148+ }
149+ }
150+
151+ if job == nil {
152+ return ExitError {1 }
153+ }
154+
155+ wk := worker .NewWorker (a , nil )
156+ if err := wk .TriggerCron (cmd .Context (), * job ); err != nil {
157+ return ExitError {1 }
158+ }
159+
160+ return nil
161+ },
162+ }
163+
164+ return cmd
165+ }
166+
130167func CronRunner (logger * slog.Logger ) * cron.Cron {
131168 parser := cron .NewParser (cron .Minute | cron .Hour | cron .Dom | cron .Month | cron .Dow | cron .Descriptor )
132169 c := cron .New (cron .WithParser (parser ))
@@ -164,52 +201,14 @@ func CronRunner(logger *slog.Logger) *cron.Cron {
164201 wk := worker .NewWorker (a , nil )
165202
166203 logger .Info ("running cron job" , "app" , appname , "name" , job .Name , "schedule" , job .Schedule )
167- go func () {
204+ go func (job app. CronJob ) {
168205 if err := wk .TriggerCron (context .Background (), job ); err != nil {
169206 logger .Error ("failed to run command" , "app" , appname , "name" , job .Name , "schedule" , job .Schedule , "error" , err )
170207 }
171- }()
208+ }(job )
172209 }
173210 }
174211 })
175212
176213 return c
177214}
178-
179- func NewCmdCronTrigger () * cobra.Command {
180- var flags struct {
181- app string
182- }
183-
184- cmd := & cobra.Command {
185- Use : "trigger <name>" ,
186- Args : cobra .ExactArgs (1 ),
187- RunE : func (cmd * cobra.Command , args []string ) error {
188- a , err := app .LoadApp (flags .app , k .String ("dir" ), k .String ("domain" ))
189- if err != nil {
190- return ExitError {1 }
191- }
192-
193- var job * app.CronJob
194- for _ , j := range a .Config .Crons {
195- if j .Name == args [0 ] {
196- job = & j
197- break
198- }
199- }
200-
201- if job == nil {
202- return ExitError {1 }
203- }
204-
205- wk := worker .NewWorker (a , nil )
206- if err := wk .TriggerCron (cmd .Context (), * job ); err != nil {
207- return ExitError {1 }
208- }
209-
210- return nil
211- },
212- }
213-
214- return cmd
215- }
0 commit comments