Working on it
This commit is contained in:
1
cmd/gime/.gitignore
vendored
1
cmd/gime/.gitignore
vendored
@@ -1 +1,2 @@
|
||||
gime
|
||||
*.db
|
||||
|
@@ -1,4 +1,4 @@
|
||||
gime
|
||||
====
|
||||
|
||||
This folder contains the cli utility for gime
|
||||
This folder contains the cli application for gime
|
||||
|
@@ -15,10 +15,13 @@ const (
|
||||
|
||||
var validOperations map[string][]string
|
||||
var activeTimeEntry *gime.TimeEntry
|
||||
var gdb *gime.GimeDB
|
||||
|
||||
func main() {
|
||||
var ret int
|
||||
initialize()
|
||||
var parms []string
|
||||
|
||||
if len(os.Args) > 1 {
|
||||
parms = os.Args[1:]
|
||||
parms[0] = matchParameter(parms[0])
|
||||
@@ -29,17 +32,21 @@ func main() {
|
||||
|
||||
switch parms[0] {
|
||||
case "help":
|
||||
printHelp()
|
||||
ret = printHelp()
|
||||
case "status":
|
||||
printStatus()
|
||||
ret = printStatus()
|
||||
case "start":
|
||||
startTimer(parms[1:])
|
||||
ret = startTimer(parms[1:])
|
||||
case "end", "stop":
|
||||
stopTimer(parms[1:])
|
||||
ret = stopTimer(parms[1:])
|
||||
default:
|
||||
fmt.Println("Unknown command")
|
||||
ret = 1
|
||||
}
|
||||
os.Exit(ret)
|
||||
}
|
||||
|
||||
func printHelp() {
|
||||
func printHelp() int {
|
||||
fmt.Println("gime - A simple timekeeping application\n")
|
||||
for _, v := range validOperations {
|
||||
for vi := range v {
|
||||
@@ -47,9 +54,10 @@ func printHelp() {
|
||||
}
|
||||
fmt.Println("")
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func printStatus() {
|
||||
func printStatus() int {
|
||||
if activeTimeEntry == nil {
|
||||
fmt.Println("No timer running")
|
||||
} else {
|
||||
@@ -62,12 +70,19 @@ func printStatus() {
|
||||
}
|
||||
fmt.Println(time.Since(activeTimeEntry.GetStart()).String())
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func startTimer(args []string) {
|
||||
// startTimer takes a list of arguments and returns the return code
|
||||
// to be passed along to os.Exit
|
||||
func startTimer(args []string) int {
|
||||
var err error
|
||||
var tm time.Time
|
||||
st := time.Now()
|
||||
tm := time.Now()
|
||||
curr := gdb.LoadTimeEntryCollection(gime.TypeCurrent)
|
||||
if curr.Length() > 0 {
|
||||
// TODO: Stop all Timers in curr
|
||||
}
|
||||
tagStart := 0
|
||||
if len(args) > 0 {
|
||||
// Check if the first argument looks like a date/time
|
||||
tm, err = time.Parse("15:04", args[0])
|
||||
@@ -77,11 +92,29 @@ func startTimer(args []string) {
|
||||
}
|
||||
if err != nil {
|
||||
// Just start it now
|
||||
tm = time.Now()
|
||||
} else {
|
||||
tagStart = 1
|
||||
}
|
||||
_, _ = tm, st
|
||||
var entry *gime.TimeEntry
|
||||
|
||||
var timerArgs []string
|
||||
if tagStart < len(args) {
|
||||
timerArgs = args[tagStart:]
|
||||
}
|
||||
fmt.Println(tm)
|
||||
if entry, err = gime.CreateTimeEntry(tm, time.Time{}, timerArgs); err != nil {
|
||||
fmt.Println(err)
|
||||
return 1
|
||||
}
|
||||
if err = gdb.SaveTimeEntry(entry); err != nil {
|
||||
fmt.Println(err)
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func stopTimer(args []string) {
|
||||
func stopTimer(args []string) int {
|
||||
var err error
|
||||
var tm time.Time
|
||||
st := time.Now()
|
||||
@@ -94,9 +127,16 @@ func stopTimer(args []string) {
|
||||
|
||||
}
|
||||
_, _ = tm, st
|
||||
return 0
|
||||
}
|
||||
|
||||
func initialize() {
|
||||
var err error
|
||||
if gdb, err = gime.LoadDatabase("./", "gime.db", "gimearch.db"); err != nil {
|
||||
fmt.Println("Error loading the database")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
validOperations = make(map[string][]string)
|
||||
validOperations["status"] = []string{
|
||||
"status - Print the current status of the timer",
|
||||
|
Reference in New Issue
Block a user