Add README.org

This commit is contained in:
Nikolay Puzanov 2014-04-18 10:11:21 +04:00
parent d086efdafe
commit d81da0a6bf
3 changed files with 81 additions and 8 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
*~ *~
*.html

70
README.org Normal file
View File

@ -0,0 +1,70 @@
#+TITLE: README
#+AUTHOR: Николай Пузанов
#+EMAIL: punzik@gmail.com
#+LANGUAGE: ru
#+STARTUP: showall
Программа написана на [[http://www.schemers.org/][Scheme]] (реализация - [[http://www.gnu.org/software/guile/][GNU Guile]]) и предназначена для учета
рабочего времени. Применяется следующим образом:
Начало работы над задачей:
#+begin_sh
$ worktimer.scm start [НАЗВАНИЕ_ЗАДАЧИ]
#+end_sh
Название задачи может состоять из нескольких частей, разделенных символом
прямого слэша. Части названия - это элементы иерархии задачи, например, название
проекта, название подпроекта, задача, подзадача и т.д. Программа учитывает
иерархическую структуру задач и вычисляет время задач, как сумму времен
подзадач.
Пример:
#+begin_sh
$ worktimer.scm start uberproject/website/design
#+end_sh
Стартует отсчет времени на подзадачу "design" задачи "website" проекта
"uberproject". Уровни вложенности не ограничены. Если команде =start= не
передать агрумент, то будет запущена последняя задача.
Остановить отсчет времени можно командой =stop=:
#+begin_src sh
$ worktimer.scm stop
#+end_src
или запустив новую задачу:
#+begin_src sh
$ worktimer.scm start uberproject/website/programming
#+end_src
По команде =report= выводится отчет по всем проектам и задачам:
#+begin_src sh
$ worktimer.scm report
--- REPORT
Overall: 00:03:45
uberproject: 00:03:45
website: 00:03:45
programming: 00:02:34
design: 00:01:11
--- LAST STOPPED TASK
uberproject/website/programming: [2014-04-18 09:47:04] - [2014-04-18 09:49:38] - 00:02:34
#+end_src
Как видно, общее время работы над проектом составило 3 минуты и 45 секунд, из
которых на дизайн сайта ушло 1 минута 11 секунд, а на программирование 2 минуты
34 секунды.
При запуске программы без аргументов выводится имя текущей задачи и текущий
таймер:
#+begin_src sh
$ worktimer.scm
uberproject/website/programming: 00:02:51
#+end_src

View File

@ -113,14 +113,16 @@
;;; Parse timesheet file and return list of tasks ;;; Parse timesheet file and return list of tasks
(define (read-timesheet filename) (define (read-timesheet filename)
(call-with-input-file filename (if (file-exists? filename)
(lambda (port) (call-with-input-file filename
(let loop ((recs '())) (lambda (port)
(let ((line (get-line port))) (let loop ((recs '()))
(if (eof-object? line) (let ((line (get-line port)))
(reverse recs) (if (eof-object? line)
(loop (let ((item (parse-task-string line))) (reverse recs)
(if item (cons item recs) recs))))))))) (loop (let ((item (parse-task-string line)))
(if item (cons item recs) recs))))))))
'()))
;;; Return difference of two dates ;;; Return difference of two dates
(define (date-difference d1 d2) (define (date-difference d1 d2)