Show last task name by default.

This commit is contained in:
Nikolay Puzanov 2018-08-28 12:15:15 +03:00
parent 7321deeb0e
commit bc4ca19818
2 changed files with 42 additions and 26 deletions

View File

@ -5,6 +5,7 @@
Commands:
start [TASK] Start new task. If no task, use last runned task
stop Stop task
current Show current running task
report Show report
report day [DATE] Show report for today or DATE
report week [DATE] Show report for current week or week of DATE
@ -88,7 +89,7 @@
uberproject/website/programming: [2014-04-18 09:47:04] - [2014-04-18 09:49:38] - 00:02:34
При запуске программы без аргументов выводится имя текущей задачи и текущий
таймер:
таймер или название последней задачи, если таймер не запущен:
$ worktimer.scm
uberproject/website/programming: 00:02:51

View File

@ -240,6 +240,11 @@
(let ((last (last-pair sheet)))
(if (null? last) #f (car last))))
;;; Returns running record
(define (running sheet)
(let ((last (last-task sheet)))
(if (and last (not (caddr last))) last #f)))
;;; Stop task. Returns #t if stopped, #f if no running task.
(define (stop-task task)
(if (not (caddr task))
@ -818,18 +823,12 @@
(if (equal? p task) a
(cons p a))) '() archives))))))
;;; ================================ MAIN FUNCTION ==================================
(define (main cmdl)
(let ((command (cdr cmdl)))
(let-values (((sheet deadlines archives) (read-timesheet ts-file)))
(if (null? command)
;; Show running task
(let ((last (last-task sheet)))
(if (and last (not (caddr last)))
(let* ((path (car last))
(timer (date-difference (current-date) (cadr last))))
;;; Show current running task
(define (cmd-current sheet deadlines archives . params)
(let ((runrec (running sheet)))
(if runrec
(let* ((path (car runrec))
(timer (date-difference (current-date) (cadr runrec))))
(format #t "~a: ~a ~a\n"
(path->string path)
(time->string timer)
@ -847,8 +846,22 @@
(date/time->string deadtime))
")"))
""))))
(begin
(format #t "NO TASKS\n"))))
(values #f #f #f))
(format #t "NO TASKS\n")))
;;; ================================ MAIN FUNCTION ==================================
(define (main cmdl)
(let ((command (cdr cmdl)))
(let-values (((sheet deadlines archives) (read-timesheet ts-file)))
(if (null? command)
(begin
(cmd-current sheet deadlines archives)
(if (not (running sheet))
(begin
(display "Last task: ")
(cmd-lasttask sheet deadlines archives))))
;; Else run command
(let ((param (cdr command))
@ -865,6 +878,7 @@
((string= command "timesheet") cmd-timesheet)
((string= command "archive") cmd-archive)
((string= command "unarch") cmd-unarch)
((string= command "current") cmd-current)
;; Service commands
((string= command "tasklist") cmd-tasklist)
((string= command "deadlist") cmd-deadlist)
@ -879,6 +893,7 @@
(format #t "Commands:\n")
(format #t " start [TASK] Start new task. If no task, use last runned task\n")
(format #t " stop Stop task\n")
(format #t " current Show current running task\n")
(format #t " report Show report\n")
(format #t " report day [DATE] Show report for today or DATE\n")
(format #t " report week [DATE] Show report for current week or week of DATE\n")