commit 35432023977291eba0a1c6fb2a3864f83e2b75c8
parent 2fbc5eb1861dba9b1915de64b62fade04cf7248f
Author: Tomas Nemec <nemi@skaut.cz>
Date: Wed, 8 Feb 2023 17:21:08 +0100
update
Diffstat:
A | command.go | | | 170 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
M | main.go | | | 162 | ------------------------------------------------------------------------------- |
M | tme/group.go | | | 2 | +- |
3 files changed, 171 insertions(+), 163 deletions(-)
diff --git a/command.go b/command.go
@@ -0,0 +1,170 @@
+package main
+
+import (
+ "errors"
+ "fmt"
+ "os"
+
+ "gtms.dev/tme/tme"
+)
+
+type Command struct {
+ basePath string
+ args []string
+ entryTime *tme.Time
+}
+
+func (c *Command) nextArg() (string, error) {
+ if len(c.args) == 0 {
+ return "", errors.New("No more arguments")
+ }
+
+ if len(c.args) == 1 {
+ first := (c.args)[0]
+ c.args = make([]string, 0)
+ return first, nil
+ }
+
+ first := (c.args)[0]
+ c.args = (c.args)[1:]
+ return first, nil
+}
+
+func (c Command) add() {
+ if len(c.args) != 3 {
+ fmt.Fprintln(os.Stderr, "add <path> <start> <stop>")
+ os.Exit(1)
+ }
+
+ groupArg, _ := c.nextArg()
+ startArg, _ := c.nextArg()
+ stopArg, _ := 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)
+ }
+
+ stop, err := c.entryTime.ParseArg(stopArg)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "[stop] time (%s) could not be parsed\n", stopArg)
+ os.Exit(1)
+ }
+
+ group := tme.NewGroup(c.basePath, groupArg)
+ // TODO(tms) 22.10.22: maybe ask if user want create new folder (fe: typo)
+ group.Create()
+
+ entry, err := tme.NewEntry(start, stop)
+ if err != nil {
+ fmt.Fprintln(os.Stderr, err)
+ os.Exit(1)
+ }
+
+ if entry.Exists(group) {
+ fmt.Fprintln(os.Stderr, "entry already created")
+ os.Exit(1)
+ }
+
+ group.Add(entry)
+}
+
+func (c Command) start() {
+ if len(c.args) != 2 {
+ fmt.Fprintln(os.Stderr, "start <path> <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.basePath, groupArg)
+ // TODO(tms) 22.10.22: maybe ask if user want create new folder (fe: typo)
+ group.Create()
+
+ entry := tme.NewStartEntry(start)
+
+ if entry.Exists(group) {
+ fmt.Fprintln(os.Stderr, "entry in this group already started")
+ os.Exit(1)
+ }
+
+ group.Add(entry)
+}
+
+func (c Command) stop() {
+ if len(c.args) != 2 {
+ fmt.Fprintln(os.Stderr, "stop <path> <stop>")
+ os.Exit(1)
+ }
+
+ groupArg, _ := c.nextArg()
+ stopArg, _ := c.nextArg()
+
+ 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.basePath, groupArg)
+
+ startEntry, err := tme.NewStartEntryFromGroup(group, c.entryTime)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "no entry running in %q\n", groupArg)
+ os.Exit(1)
+ }
+
+ entry, err := startEntry.Stop(stop)
+ if err != nil {
+ fmt.Fprintln(os.Stderr, err)
+ os.Exit(1)
+ }
+
+ if entry.Exists(group) {
+ fmt.Fprintln(os.Stderr, "entry already created")
+ os.Exit(1)
+ }
+
+ err = group.Add(entry)
+ if err != nil {
+ fmt.Fprintln(os.Stderr, err)
+ os.Exit(1)
+ }
+
+ err = group.Remove(startEntry)
+ if err != nil {
+ fmt.Fprintln(os.Stderr, err)
+ os.Exit(1)
+ }
+}
+
+func (c Command) ls() {
+ if len(c.args) > 1 {
+ fmt.Fprintln(os.Stderr, "ls [<path>]")
+ os.Exit(1)
+ }
+
+ rootPath := ""
+ if len(c.args) == 1 {
+ rootPath, _ = c.nextArg()
+ }
+
+ group := tme.NewGroup(c.basePath, rootPath)
+ files, err := group.List()
+ if err != nil {
+ fmt.Fprintln(os.Stderr, err)
+ os.Exit(1)
+ }
+
+ for _, file := range files {
+ fmt.Println(file)
+ }
+}
diff --git a/main.go b/main.go
@@ -1,7 +1,6 @@
package main
import (
- "errors"
"fmt"
"os"
@@ -44,164 +43,3 @@ func main() {
command.ls()
}
}
-
-type Command struct {
- basePath string
- args []string
- entryTime *tme.Time
-}
-
-func (c *Command) nextArg() (string, error) {
- if len(c.args) == 0 {
- return "", errors.New("No more arguments")
- }
-
- if len(c.args) == 1 {
- first := (c.args)[0]
- c.args = make([]string, 0)
- return first, nil
- }
-
- first := (c.args)[0]
- c.args = (c.args)[1:]
- return first, nil
-}
-
-func (c Command) add() {
- if len(c.args) != 3 {
- fmt.Fprintln(os.Stderr, "add <path> <start> <stop>")
- os.Exit(1)
- }
-
- groupArg, _ := c.nextArg()
- startArg, _ := c.nextArg()
- stopArg, _ := 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)
- }
-
- stop, err := c.entryTime.ParseArg(stopArg)
- if err != nil {
- fmt.Fprintf(os.Stderr, "[stop] time (%s) could not be parsed\n", stopArg)
- os.Exit(1)
- }
-
- group := tme.NewGroup(c.basePath, groupArg)
- // TODO(tms) 22.10.22: maybe ask if user want create new folder (fe: typo)
- group.Create()
-
- entry, err := tme.NewEntry(start, stop)
- if err != nil {
- fmt.Fprintln(os.Stderr, err)
- os.Exit(1)
- }
-
- if entry.Exists(group) {
- fmt.Fprintln(os.Stderr, "entry already created")
- os.Exit(1)
- }
-
- group.Add(entry)
-}
-
-func (c Command) start() {
- if len(c.args) != 2 {
- fmt.Fprintln(os.Stderr, "start <path> <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.basePath, groupArg)
- // TODO(tms) 22.10.22: maybe ask if user want create new folder (fe: typo)
- group.Create()
-
- entry := tme.NewStartEntry(start)
-
- if entry.Exists(group) {
- fmt.Fprintln(os.Stderr, "entry in this group already started")
- os.Exit(1)
- }
-
- group.Add(entry)
-}
-
-func (c Command) stop() {
- if len(c.args) != 2 {
- fmt.Fprintln(os.Stderr, "stop <path> <stop>")
- os.Exit(1)
- }
-
- groupArg, _ := c.nextArg()
- stopArg, _ := c.nextArg()
-
- 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.basePath, groupArg)
-
- startEntry, err := tme.NewStartEntryFromGroup(group, c.entryTime)
- if err != nil {
- fmt.Fprintf(os.Stderr, "no entry running in %q\n", groupArg)
- os.Exit(1)
- }
-
- entry, err := startEntry.Stop(stop)
- if err != nil {
- fmt.Fprintln(os.Stderr, err)
- os.Exit(1)
- }
-
- if entry.Exists(group) {
- fmt.Fprintln(os.Stderr, "entry already created")
- os.Exit(1)
- }
-
- err = group.Add(entry)
- if err != nil {
- fmt.Fprintln(os.Stderr, err)
- os.Exit(1)
- }
-
- err = group.Remove(startEntry)
- if err != nil {
- fmt.Fprintln(os.Stderr, err)
- os.Exit(1)
- }
-}
-
-func (c Command) ls() {
- if len(c.args) > 1 {
- fmt.Fprintln(os.Stderr, "ls [<path>]")
- os.Exit(1)
- }
-
- rootPath := ""
- if len(c.args) == 1 {
- rootPath, _ = c.nextArg()
- }
-
- group := tme.NewGroup(c.basePath, rootPath)
- files, err := group.List()
- if err != nil {
- fmt.Fprintln(os.Stderr, err)
- os.Exit(1)
- }
-
- for _, file := range files {
- fmt.Println(file)
- }
-}
diff --git a/tme/group.go b/tme/group.go
@@ -61,7 +61,7 @@ func (g Group) Remove(entry Entry) error {
func (g Group) List() ([]string, error) {
if !g.Exists() {
- return []string{}, errors.New("Group does not exist")
+ return []string{}, errors.New("Group '" + g.Path + "' does not exist")
}
var files []string