@@ -13,15 +13,19 @@ import (
1313)
1414
1515type Options struct {
16- Parallelism int
16+ Parallelism int
17+ Timestamps bool
18+ Status bool
19+ Events bool
20+ Logs bool
1721}
1822
1923func New (cloud * common.Cloud ) * cobra.Command {
2024 o := Options {}
2125
2226 cmd := & cobra.Command {
2327 Use : "read <name>" ,
24- Short : "Read the status of a task" ,
28+ Short : "Read information from an existing task" ,
2529 Long : `` ,
2630 Args : cobra .ExactArgs (1 ),
2731 RunE : func (cmd * cobra.Command , args []string ) error {
@@ -30,6 +34,10 @@ func New(cloud *common.Cloud) *cobra.Command {
3034 }
3135
3236 cmd .Flags ().IntVar (& o .Parallelism , "parallelism" , 1 , "parallelism" )
37+ cmd .Flags ().BoolVar (& o .Timestamps , "timestamps" , false , "display timestamps" )
38+ cmd .Flags ().BoolVar (& o .Status , "status" , true , "read status" )
39+ cmd .Flags ().BoolVar (& o .Logs , "logs" , false , "read logs" )
40+ cmd .MarkFlagsMutuallyExclusive ("status" , "logs" )
3341
3442 return cmd
3543}
@@ -58,45 +66,61 @@ func (o *Options) Run(cmd *cobra.Command, args []string, cloud *common.Cloud) er
5866 return err
5967 }
6068
61- var events []string
62- for _ , event := range tsk .Events (ctx ) {
63- events = append (events , fmt .Sprintf (
64- "%s: %s\n %s" ,
65- event .Time .Format ("2006-01-02 15:04:05" ),
66- event .Code ,
67- strings .Join (event .Description , "\n " ),
68- ))
69+ switch {
70+ case o .Logs :
71+ return o .printLogs (ctx , tsk )
72+ case o .Status :
73+ return o .printStatus (ctx , tsk )
6974 }
70- logrus .Info (events )
7175
76+ return nil
77+ }
78+
79+ func (o * Options ) printLogs (ctx context.Context , tsk task.Task ) error {
7280 logs , err := tsk .Logs (ctx )
7381 if err != nil {
7482 return err
7583 }
7684
77- for index , log := range logs {
85+ for _ , log := range logs {
7886 for _ , line := range strings .Split (strings .Trim (log , "\n " ), "\n " ) {
79- logrus .Infof ("\x1b [%dmLOG %d >> %s" , 35 , index , line )
87+ if ! o .Timestamps {
88+ _ , line , _ = strings .Cut (line , " " )
89+ }
90+ fmt .Println (line )
91+ }
92+ }
93+
94+ return nil
95+ }
96+
97+ func (o * Options ) printStatus (ctx context.Context , tsk task.Task ) error {
98+ for _ , event := range tsk .Events (ctx ) {
99+ line := fmt .Sprintf ("%s: %s" , event .Code , strings .Join (event .Description , " " ))
100+ if o .Timestamps {
101+ line = fmt .Sprintf ("%s %s" , event .Time .Format ("2006-01-02T15:04:05Z" ), line )
80102 }
103+
104+ logrus .Debug (line )
81105 }
82106
83107 status , err := tsk .Status (ctx )
84108 if err != nil {
85109 return err
86110 }
87111
88- message := fmt . Sprintf ( " \x1b [%dmStatus: queued \x1b [1m• \x1b [0m" , 34 )
112+ message := " queued"
89113
90114 if status ["succeeded" ] >= o .Parallelism {
91- message = fmt . Sprintf ( " \x1b [%dmStatus: completed successfully \x1b [1m• \x1b [0m" , 32 )
115+ message = "succeeded"
92116 }
93117 if status ["failed" ] > 0 {
94- message = fmt . Sprintf ( " \x1b [%dmStatus: completed with errors \x1b [1m• \x1b [0m" , 31 )
118+ message = "failed"
95119 }
96120 if status ["running" ] >= o .Parallelism {
97- message = fmt . Sprintf ( " \x1b [%dmStatus: running \x1b [1m• \x1b [0m" , 33 )
121+ message = " running"
98122 }
99123
100- logrus . Info (message )
124+ fmt . Println (message )
101125 return nil
102126}
0 commit comments