@@ -17,6 +17,7 @@ package cmd
1717
1818import (
1919 "context"
20+ "fmt"
2021 "log/slog"
2122 "os"
2223 "os/signal"
@@ -36,60 +37,60 @@ var runCmd = &cobra.Command{
3637
3738example: tagit run -s my-super-service -x '/tmp/tag-role.sh'
3839` ,
39- Run : func (cmd * cobra.Command , args []string ) {
40+ RunE : func (cmd * cobra.Command , args []string ) error {
4041 logger := slog .New (slog .NewTextHandler (os .Stderr , & slog.HandlerOptions {
4142 Level : slog .LevelInfo ,
4243 }))
4344
4445 interval , err := cmd .InheritedFlags ().GetString ("interval" )
4546 if err != nil {
4647 logger .Error ("Failed to get interval flag" , "error" , err )
47- os . Exit ( 1 )
48+ return err
4849 }
4950
5051 if interval == "" || interval == "0" {
5152 logger .Error ("Interval is required" )
52- os . Exit ( 1 )
53+ return fmt . Errorf ( "interval is required and cannot be empty or zero" )
5354 }
5455
5556 validInterval , err := time .ParseDuration (interval )
5657 if err != nil {
5758 logger .Error ("Invalid interval" , "interval" , interval , "error" , err )
58- os . Exit ( 1 )
59+ return fmt . Errorf ( "invalid interval %q: %w" , interval , err )
5960 }
6061
6162 config := api .DefaultConfig ()
6263 config .Address , err = cmd .InheritedFlags ().GetString ("consul-addr" )
6364 if err != nil {
6465 logger .Error ("Failed to get consul-addr flag" , "error" , err )
65- os . Exit ( 1 )
66+ return err
6667 }
6768 config .Token , err = cmd .InheritedFlags ().GetString ("token" )
6869 if err != nil {
6970 logger .Error ("Failed to get token flag" , "error" , err )
70- os . Exit ( 1 )
71+ return err
7172 }
7273
7374 consulClient , err := api .NewClient (config )
7475 if err != nil {
7576 logger .Error ("Failed to create Consul client" , "error" , err )
76- os . Exit ( 1 )
77+ return fmt . Errorf ( "failed to create Consul client: %w" , err )
7778 }
7879
7980 serviceID , err := cmd .InheritedFlags ().GetString ("service-id" )
8081 if err != nil {
8182 logger .Error ("Failed to get service-id flag" , "error" , err )
82- os . Exit ( 1 )
83+ return err
8384 }
8485 script , err := cmd .InheritedFlags ().GetString ("script" )
8586 if err != nil {
8687 logger .Error ("Failed to get script flag" , "error" , err )
87- os . Exit ( 1 )
88+ return err
8889 }
8990 tagPrefix , err := cmd .InheritedFlags ().GetString ("tag-prefix" )
9091 if err != nil {
9192 logger .Error ("Failed to get tag-prefix flag" , "error" , err )
92- os . Exit ( 1 )
93+ return err
9394 }
9495
9596 t := tagit .New (
@@ -124,6 +125,7 @@ example: tagit run -s my-super-service -x '/tmp/tag-role.sh'
124125 t .Run (ctx )
125126
126127 logger .Info ("Tagit has stopped" )
128+ return nil
127129 },
128130}
129131
0 commit comments