Skip to content

punzik/worktimer

Repository files navigation

Программа написана на Scheme (реализация - GNU Guile) и предназначена для учета рабочего времени. Применяется следующим образом:

Usage: timer [command]
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/DELTA]         Show report for today or DATE or DELTA days ago (e.g. -1)
    report week [DATE]              Show report for current week or week of DATE
    report month [DATE]             Show report for current month or month of DATE
    report TASK                     Show report for project
    deadline set [TASK] DATE|TIME   Add deadline for project (or for last task)
    deadline clear [TASK]           Remove deadline for project (or for last task)
    deadline [TASK]                 Show deadline for project
    deadline all                    Show all deadlines
    timesheet                       Show all raw events
    timesheet day [DATE]            Show raw events for today or DATE
    timesheet week [DATE]           Show raw events for current week or week of DATE
    timesheet month [DATE]          Show raw events for current month or month of DATE
    timesheet TASK                  Show raw events
    archive                         Show archive tasks
    archive TASK                    Add task to archive
    unarch TASK                     Remove task from archive
    refresh                         Refresh worksheet file after manual edit
    (no command)                    Show running task and timer

Начало работы над задачей:

$ worktimer.scm start [НАЗВАНИЕ_ЗАДАЧИ]

Название задачи может состоять из нескольких частей, разделенных символом прямого слэша. Части названия - это элементы иерархии задачи, например, название проекта, название подпроекта, задача, подзадача и т.д. Программа учитывает иерархическую структуру задач и вычисляет время задач, как сумму времен подзадач.

Пример:

$ worktimer.scm start uberproject/website/design

Стартует отсчет времени на подзадачу "design" задачи "website" проекта "uberproject". Уровни вложенности не ограничены. Если команде start не передать агрумент, то будет запущена последняя задача.

Остановить отсчет времени можно командой stop:

$ worktimer.scm stop

или запустив новую задачу:

$ worktimer.scm start uberproject/website/programming

По команде report выводится отчет по всем проектам и задачам:

$ 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

Как видно, общее время работы над проектом составило 3 минуты и 45 секунд, из которых на дизайн сайта ушло 1 минута 11 секунд, а на программирование 2 минуты 34 секунды.

Команда report может иметь параметры:

  • day [DATE/DELTA] - отчет по текущему дню, по дате DATE или по дню + DELTA (например, вчера - это -1);
  • week [DATE] - отчет по текущей неделе или по неделе, в которую входит день DATE;
  • month [DATE] - отчет по текущему месяцу или по месяцу, в который входит день DATE;

Кроме того, параметром команды report может быть название проекта, например:

$ worktimer.scm report uberproject/website
--- REPORT
Overall: 00:03:45
  uberproject: 00:03:45
    website: 00:03:45

--- LAST STOPPED TASK
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

Команда deadline предназначена для добавления и удаления дедлайнов. Дедлайны могут быть датой, до которой нужно закончить проект, или временем, которое можно потратить на выполнение задачи.

Установить дедлайт для проекта можно командой deadline set. В качестве аргумента может выступать имя задачи и дата/время или просто дата/время (в этом случае дедлайн установится для последней запущеной задачи).

Удаляется дедлайн командой deadline clear с именем проекта в качестве параметра.

Посмотреть установленные дедлайны можно командой deadline all. Команда deadline без параметров выведет дедлайн для текущей задачи.

Дедлайны отображаются в отчете. Для дедлайна по времени признак истечения времени зависит от периода, за который сформирован отчет. Например, если дедлайн по проекту 1 час, а всего на проект потрачено 2 часа, из которых сегодня только 20 минут, то при формировании отчета за весь период (или по проекту) признак превышения времени будет установлен. А при отчете за сегодня, до дедлайна останется еще 40 минут. Это может быть удобно при планировании времени на день/неделю/месяц.

Для того, чтобы посмотреть историю работы, можно воспользоваться командой timesheet. Эта команда показывает выполнявшиеся задачи в таком виде, в котором они сохраняются на диск. Параметры команды такие-же, как у команды report.

Задачи (или подзадачи) можно отправлять в архив командой archive [TASK]. После этого они перестают отображаться в отчете и в списке задач. Посмотреть список архивированных задач можно командой archive без параметров. Деархивировать задачу можно командой unarch [TASK].

Автодополнение для zsh

Для включения автодополнения в zsh скопируйте файл zsh-completion/_timer в ~/.zsh-completion/, и добавьте в файл ~/.zshrc строки

fpath=(~/.zsh-completions $fpath)
autoload -Uz compinit
compinit

И не забудте сделать симлинк (например) /usr/local/bin/timer на worktimer.scm.

Автодополнение для bash

Автодополнение в bash включается так:

$ . bash-completion/timer

Автодополнение для fish

Скопируйте файл fish-completion/timer-complete.fish в папку с конфигом (обычно это ~/.config/fish, и дообавьте следующий код в конфигурационный файл:

set -l configdir ~/.config
if set -q XDG_CONFIG_HOME
    set configdir $XDG_CONFIG_HOME
end

source $configdir/fish/timer-complete.fish

About

Work time tracker

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published