tme

Toggl like Time Manager
git clone git://gtms.dev:tme
Log | Files | Refs

commit 62d43b6978d914917b7be65c0fb0cabff12c8199
parent 1d0b0df80e65527e655fd5d2b40fca43ecb6c0e9
Author: Tomas Nemec <nemi@skaut.cz>
Date:   Sat, 11 Feb 2023 01:52:17 +0100

feat: optional specification of time for start and stop

Diffstat:
Mcommand.go | 44++++++++++++++++++++++++--------------------
1 file changed, 24 insertions(+), 20 deletions(-)

diff --git a/command.go b/command.go @@ -76,24 +76,26 @@ func (c Command) add() { } func (c Command) start() { - if len(c.args) != 2 { - fmt.Fprintln(os.Stderr, "start <group> <start>") + if len(c.args) < 1 || len(c.args) > 2 { + fmt.Fprintln(os.Stderr, "start <group> [<start>]") os.Exit(1) } groupArg, _ := c.nextArg() - startArg, _ := c.nextArg() - - start, err := c.entryTime.ParseArg(startArg) - if err != nil { - fmt.Fprintf(os.Stderr, "[start] time (%s) could not be parsed\n", startArg) - os.Exit(1) - } - group := tme.NewGroup(c.rootPath, groupArg) // TODO(tms) 22.10.22: maybe ask if user want create new folder (fe: typo) group.Create() + startArg, err := c.nextArg() + start := time.Now() + if err == nil { + start, err = c.entryTime.ParseArg(startArg) + if err != nil { + fmt.Fprintf(os.Stderr, "[start] time (%s) could not be parsed\n", startArg) + os.Exit(1) + } + } + entry := tme.NewRunningEntry(start) if entry.Exists(group) { @@ -105,22 +107,24 @@ func (c Command) start() { } func (c Command) stop() { - if len(c.args) != 2 { - fmt.Fprintln(os.Stderr, "stop <group> <stop>") + if len(c.args) < 1 || len(c.args) > 2 { + fmt.Fprintln(os.Stderr, "stop <group> [<stop>]") os.Exit(1) } groupArg, _ := c.nextArg() - stopArg, _ := c.nextArg() + group := tme.NewGroup(c.rootPath, groupArg) - stop, err := c.entryTime.ParseArg(stopArg) - if err != nil { - fmt.Fprintf(os.Stderr, "[start] time (%s) could not be parsed\n", stopArg) - os.Exit(1) + stop := time.Now() + stopArg, err := c.nextArg() + if err == nil { + stop, err = c.entryTime.ParseArg(stopArg) + if err != nil { + fmt.Fprintf(os.Stderr, "[start] time (%s) could not be parsed\n", stopArg) + os.Exit(1) + } } - group := tme.NewGroup(c.rootPath, groupArg) - startEntry, err := tme.NewRunningEntryFromPath(group.ActivePath(), c.entryTime) if err != nil { fmt.Fprintf(os.Stderr, "no entry running in %q\n", groupArg) @@ -262,7 +266,7 @@ func formatEntries(group tme.Group, entryTime *tme.Time) { func formatEntry(group tme.Group, entry tme.Entry) { groupPath := group.Path duration := entry.Duration().Round(time.Second) - timeLayout := "15:04 02/01/2006" + timeLayout := "15:04:05 02/01/2006" var start, stop string switch e := entry.(type) {