2020-10-11 20:15:25 +00:00
package z
import (
2020-10-14 23:22:36 +00:00
"os"
2020-10-11 20:15:25 +00:00
"log"
2020-10-14 23:22:36 +00:00
"fmt"
2020-10-11 20:15:25 +00:00
"time"
"github.com/spf13/cobra"
2020-10-14 23:22:36 +00:00
"github.com/gookit/color"
2020-10-11 20:15:25 +00:00
)
var finishCmd = & cobra . Command {
Use : "finish" ,
Short : "Finish currently running tracker" ,
Long : "Finishing a currently running tracker." ,
Run : func ( cmd * cobra . Command , args [ ] string ) {
user := GetCurrentUser ( )
runningEntryId , err := database . GetRunningEntryId ( user )
if err != nil {
log . Fatal ( err )
}
if runningEntryId == "" {
2020-10-14 23:22:36 +00:00
fmt . Printf ( "□ not running\n" )
os . Exit ( - 1 )
2020-10-11 20:15:25 +00:00
}
runningEntry , err := database . GetEntry ( user , runningEntryId )
if err != nil {
log . Fatal ( err )
}
2020-10-14 23:22:36 +00:00
tmpEntry , err := NewEntry ( runningEntry . ID , begin , finish , project , task , user )
2020-10-11 20:15:25 +00:00
if err != nil {
log . Fatal ( err )
}
2020-10-14 23:22:36 +00:00
if begin != "" {
runningEntry . Begin = tmpEntry . Begin
}
if finish != "" {
runningEntry . Finish = tmpEntry . Finish
} else {
runningEntry . Finish = time . Now ( )
}
2020-10-11 20:15:25 +00:00
2020-10-14 23:22:36 +00:00
if project != "" {
runningEntry . Project = tmpEntry . Project
}
if task != "" {
runningEntry . Task = tmpEntry . Task
}
_ , err = database . FinishEntry ( user , runningEntry )
if err != nil {
log . Fatal ( err )
}
if runningEntry . Task != "" && runningEntry . Project != "" {
fmt . Printf ( "□ finished tracking %s on %s\n" , color . FgLightWhite . Render ( runningEntry . Task ) , color . FgLightWhite . Render ( runningEntry . Project ) )
} else if runningEntry . Task != "" && runningEntry . Project == "" {
fmt . Printf ( "□ finished tracking %s\n" , color . FgLightWhite . Render ( runningEntry . Task ) )
} else if runningEntry . Task == "" && runningEntry . Project != "" {
fmt . Printf ( "□ finished tracking task on %s\n" , color . FgLightWhite . Render ( runningEntry . Project ) )
} else {
fmt . Printf ( "□ finished tracking task\n" )
}
2020-10-11 20:15:25 +00:00
return
} ,
}
func init ( ) {
rootCmd . AddCommand ( finishCmd )
finishCmd . Flags ( ) . StringVarP ( & begin , "begin" , "b" , "" , "Time the entry should begin at\n\nEither in the formats 16:00 / 4:00PM \nor relative to the current time, \ne.g. -0:15 (now minus 15 minutes), +1.50 (now plus 1:30h)." )
finishCmd . Flags ( ) . StringVarP ( & finish , "finish" , "s" , "" , "Time the entry should finish at\n\nEither in the formats 16:00 / 4:00PM \nor relative to the current time, \ne.g. -0:15 (now minus 15 minutes), +1.50 (now plus 1:30h).\nMust be after --begin time." )
finishCmd . Flags ( ) . StringVarP ( & project , "project" , "p" , "" , "Project to be assigned" )
finishCmd . Flags ( ) . StringVarP ( & task , "task" , "t" , "" , "Task to be assigned" )
var err error
database , err = InitDatabase ( )
if err != nil {
log . Fatal ( err )
}
}