timr 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ackrc +9 -0
- data/.editorconfig +1 -0
- data/.env.example +7 -0
- data/.github/CONTRIBUTING.md +32 -0
- data/.github/ISSUE_TEMPLATE.md +13 -0
- data/.gitignore +8 -2
- data/.rdoc_options +21 -0
- data/.travis.yml +10 -7
- data/Gemfile +8 -0
- data/README.md +216 -3
- data/bin/.gitignore +2 -0
- data/bin/README.md +17 -0
- data/bin/build.sh +14 -0
- data/bin/build_api.sh +14 -0
- data/bin/build_coverage.sh +23 -0
- data/bin/build_info.sh +27 -0
- data/bin/build_man.sh +41 -0
- data/bin/clean.sh +14 -0
- data/bin/dev_setup.sh +19 -0
- data/bin/install.sh +49 -0
- data/bin/publish +38 -0
- data/bin/release.sh +35 -0
- data/bin/test.sh +19 -0
- data/bin/timr +20 -40
- data/bin/timr_bash_completion.sh +337 -0
- data/bin/uninstall.sh +24 -0
- data/lib/timr.rb +36 -8
- data/lib/timr/command/basic_command.rb +170 -0
- data/lib/timr/command/continue_command.rb +86 -0
- data/lib/timr/command/help_command.rb +137 -0
- data/lib/timr/command/log_command.rb +297 -0
- data/lib/timr/command/pause_command.rb +89 -0
- data/lib/timr/command/pop_command.rb +176 -0
- data/lib/timr/command/push_command.rb +141 -0
- data/lib/timr/command/report_command.rb +689 -0
- data/lib/timr/command/start_command.rb +172 -0
- data/lib/timr/command/status_command.rb +198 -0
- data/lib/timr/command/stop_command.rb +127 -0
- data/lib/timr/command/task_command.rb +318 -0
- data/lib/timr/command/track_command.rb +381 -0
- data/lib/timr/command/version_command.rb +18 -0
- data/lib/timr/duration.rb +159 -0
- data/lib/timr/exception/timr_error.rb +113 -0
- data/lib/timr/ext/time.rb +12 -0
- data/lib/timr/helper/datetime_helper.rb +128 -0
- data/lib/timr/helper/terminal_helper.rb +58 -0
- data/lib/timr/helper/translation_helper.rb +45 -0
- data/lib/timr/model/basic_model.rb +287 -0
- data/lib/timr/model/config.rb +48 -0
- data/lib/timr/model/foreign_id_db.rb +84 -0
- data/lib/timr/model/stack.rb +161 -0
- data/lib/timr/model/task.rb +1039 -0
- data/lib/timr/model/track.rb +589 -0
- data/lib/timr/progressbar.rb +41 -0
- data/lib/timr/simple_opt_parser.rb +230 -0
- data/lib/timr/status.rb +70 -0
- data/lib/timr/table.rb +88 -0
- data/lib/timr/timr.rb +500 -558
- data/lib/timr/version.rb +4 -15
- data/man/.gitignore +2 -0
- data/man/_footer +3 -0
- data/man/timr-continue.1 +48 -0
- data/man/timr-continue.1.ronn +39 -0
- data/man/timr-ftime.7 +77 -0
- data/man/timr-ftime.7.ronn +57 -0
- data/man/timr-log.1 +109 -0
- data/man/timr-log.1.ronn +87 -0
- data/man/timr-pause.1 +56 -0
- data/man/timr-pause.1.ronn +45 -0
- data/man/timr-pop.1 +66 -0
- data/man/timr-pop.1.ronn +53 -0
- data/man/timr-push.1 +25 -0
- data/man/timr-push.1.ronn +20 -0
- data/man/timr-report.1 +228 -0
- data/man/timr-report.1.ronn +193 -0
- data/man/timr-start.1 +100 -0
- data/man/timr-start.1.ronn +82 -0
- data/man/timr-status.1 +53 -0
- data/man/timr-status.1.ronn +42 -0
- data/man/timr-stop.1 +75 -0
- data/man/timr-stop.1.ronn +60 -0
- data/man/timr-task.1 +147 -0
- data/man/timr-task.1.ronn +115 -0
- data/man/timr-track.1 +109 -0
- data/man/timr-track.1.ronn +89 -0
- data/man/timr.1 +119 -0
- data/man/timr.1.ronn +68 -0
- data/timr.gemspec +18 -3
- data/timr.sublime-project +20 -1
- metadata +142 -23
- data/Makefile +0 -12
- data/Makefile.common +0 -56
- data/lib/timr/stack.rb +0 -81
- data/lib/timr/task.rb +0 -258
- data/lib/timr/track.rb +0 -167
- data/lib/timr/window.rb +0 -259
- data/lib/timr/window_help.rb +0 -41
- data/lib/timr/window_tasks.rb +0 -30
- data/lib/timr/window_test.rb +0 -20
- data/lib/timr/window_timeline.rb +0 -33
- data/tests/tc_stack.rb +0 -121
- data/tests/tc_task.rb +0 -190
- data/tests/tc_track.rb +0 -144
- data/tests/tc_window.rb +0 -428
- data/tests/ts_all.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f79b6ea230b0bb324476f5cb65f5f8905c8f0eac
|
4
|
+
data.tar.gz: 2f85343c2c7ee84c052067f40d263a76ffffc832
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 374a2459ee630217d4cafa343150690d0729c1ef6a93c1221569e85ae79ea4a8be48919e2ccb43810ba95a354446d6a9bde388229bf6e7e53b6dfccd7a9a7cd8
|
7
|
+
data.tar.gz: c1bdc85bc01a15f9f5cc827c3c2dff82ba0fbfe8c3e3d68a2987b8c61a1d0d590037ab0d841dde8a8041f332a7c28ae833de57d7f8afdc7e308823960fbe65f3
|
data/.ackrc
ADDED
data/.editorconfig
CHANGED
data/.env.example
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
In the spirit of :free: [free software](http://www.fsf.org/licensing/essays/free-sw.html), **everyone** is encouraged to help improve this project.
|
4
|
+
|
5
|
+
Here are some ways *you* can contribute:
|
6
|
+
|
7
|
+
* by using alpha, beta, and prerelease versions. :floppy_disk: :cd: :egg:
|
8
|
+
* by reporting bugs. :scream: :laughing:
|
9
|
+
* by suggesting new features. :nose: :bulb: :new: :pizza:
|
10
|
+
* by writing or editing documentation. :clipboard: :orange_book: :books:
|
11
|
+
* by writing code (**no patch is too small**: fix typos, add comments). :wink: :confused: :tired_face: :smirk: :white_check_mark:
|
12
|
+
* by refactoring code. :open_mouth: :speak_no_evil:
|
13
|
+
* by closing [issues](https://github.com/TheFox/timr/issues). :hash:
|
14
|
+
* by reviewing patches. :+1: :-1:
|
15
|
+
* by writing blog posts. :memo: :newspaper:
|
16
|
+
|
17
|
+
## Submitting an Issue
|
18
|
+
|
19
|
+
We use the :octocat: [GitHub issue tracker](https://github.com/TheFox/timr/issues) to track :beetle: bugs and :bomb: features. Before submitting a bug report or feature request, check to make sure it hasn't already been submitted. Otherwise feel free to create a :hash: [new issue](https://github.com/TheFox/timr/issues/mew).
|
20
|
+
|
21
|
+
## Submitting a Pull Request
|
22
|
+
|
23
|
+
1. [Fork](https://help.github.com/articles/fork-a-repo/) the official repository. :fearful:
|
24
|
+
Run `./bin/dev_setup.sh` to get started with development.
|
25
|
+
2. Create a [topic branch](https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/). :frowning:
|
26
|
+
3. Implement your feature or bugfix. :smile:
|
27
|
+
4. Add, commit, and push your changes. :sunglasses:
|
28
|
+
5. Submit a [pull request](https://help.github.com/articles/about-pull-requests/). :smirk:
|
29
|
+
|
30
|
+
---
|
31
|
+
|
32
|
+
Inspired by https://github.com/jfelchner/ruby-progressbar/blob/b837c09ea1e34923d984ab47bd47ef095fcb5a92/CONTRIBUTING.md
|
data/.gitignore
CHANGED
data/.rdoc_options
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
--- !ruby/object:RDoc::Options
|
2
|
+
encoding: UTF-8
|
3
|
+
static_path: []
|
4
|
+
rdoc_include: []
|
5
|
+
charset: UTF-8
|
6
|
+
exclude: []
|
7
|
+
hyperlink_all: false
|
8
|
+
line_numbers: true
|
9
|
+
locale: en
|
10
|
+
locale_dir: locale
|
11
|
+
locale_name:
|
12
|
+
main_page: README.md
|
13
|
+
markup: markdown
|
14
|
+
output_decoration: true
|
15
|
+
page_dir:
|
16
|
+
show_hash: false
|
17
|
+
tab_width: 4
|
18
|
+
template_stylesheets: []
|
19
|
+
title: Timr
|
20
|
+
visibility: :protected
|
21
|
+
webcvs:
|
data/.travis.yml
CHANGED
@@ -2,19 +2,22 @@ language: ruby
|
|
2
2
|
rvm:
|
3
3
|
- 2.1
|
4
4
|
- 2.2
|
5
|
+
- 2.3
|
6
|
+
- 2.4.0
|
7
|
+
- ruby-head
|
5
8
|
sudo: required
|
6
9
|
before_install:
|
7
|
-
- gem update --system
|
8
10
|
- gem --version
|
9
|
-
- gem
|
11
|
+
- gem update --system
|
12
|
+
- gem install bundler -v '~>1.13'
|
10
13
|
- bundler --version
|
11
14
|
install:
|
12
|
-
-
|
13
|
-
- gem build
|
14
|
-
- gem install
|
15
|
-
- gem list -l
|
15
|
+
- bundler install
|
16
|
+
- 'gem build "${GEMSPEC_FILE}"'
|
17
|
+
- 'gem install "${GEM_NAME}"-*.gem'
|
18
|
+
- 'gem list -l "${GEM_NAME}"'
|
16
19
|
script:
|
17
|
-
-
|
20
|
+
- ./bin/test.sh
|
18
21
|
- cd
|
19
22
|
- which -a timr
|
20
23
|
- timr --version
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,15 +1,228 @@
|
|
1
1
|
# Timr
|
2
2
|
|
3
|
-
|
3
|
+
Timr is a time tracking tool for the [Command-line](https://en.wikipedia.org/wiki/Command-line_interface), written in [Ruby](https://www.ruby-lang.org/). You can track your time spent for a specific project. I know, there are (too) many time tracking tools and such blabla you can use. The main focus of this tool is to use it on the Command-line and make automatic reports. I love the Command-line, so I want the terminal to handle as much as possible. I don't want programms with fancy UIs. Text-based is good enough. All data are stored in YAML files. So editing can also be done by using your favorite editor.
|
4
|
+
|
5
|
+
## Install
|
6
|
+
|
7
|
+
You can either install Timr via [RubyGems.org](https://rubygems.org/gems/timr) or from [source](https://github.com/TheFox/timr).
|
8
|
+
|
9
|
+
## Install via RubyGems.org
|
10
|
+
|
11
|
+
The preferred method of installation is via RubyGems.org:
|
12
|
+
<https://rubygems.org/gems/timr>
|
13
|
+
|
14
|
+
gem install timr
|
15
|
+
|
16
|
+
## Install from Source
|
17
|
+
|
18
|
+
1. Clone `git clone https://github.com/TheFox/timr.git && cd timr`.
|
19
|
+
2. Run `./bin/install.sh`. This creates the `timr` gem local and installs it.
|
20
|
+
|
21
|
+
## Get Started
|
22
|
+
|
23
|
+
The simplest thing you can do after installation is start a new Task:
|
24
|
+
|
25
|
+
$ timr start
|
26
|
+
|
27
|
+
And after some time you probably want to stop:
|
28
|
+
|
29
|
+
$ timr stop
|
30
|
+
|
31
|
+
To show the current status:
|
32
|
+
|
33
|
+
$ timr status
|
34
|
+
|
35
|
+
## Task
|
36
|
+
|
37
|
+
A Task can have a name, a description, an estimation and many more. A Task can have multiple Tracks. One Track can have only one Task as parent. So a Task represents a collection of Tracks.
|
38
|
+
|
39
|
+
## Track
|
40
|
+
|
41
|
+
A Track is atomic. It's the smallest time unit. This is where the time comes from. It's a time span presented by a begin date time and end date time. All date times are stored as UTC and converted temporary to your local timezone.
|
42
|
+
|
43
|
+
## Stack
|
44
|
+
|
45
|
+
The Stack holds Tracks. If you know [Git Stashing](https://git-scm.com/book/en/v1/Git-Tools-Stashing) it's very similar. Just for Tracks. The most recent Track is sometimes called the *Top Track*. It's either the current running Track or on `pause` the latest ran Track.
|
46
|
+
|
47
|
+
When first starting a new Task, a new Track will be created and pushed to the Stack. When running the Stop command this Task will be removed from the Stack.
|
48
|
+
|
49
|
+
You can push another Track to the Stack by running the Push command. It is like the Start command but without removing the previous Track from the Stack. The Push and Pop command is helpful when you need to work temporary on another Task. When running the Pop command the Top Track will be stopped and removed from the Stack. Further, the next Track on the Stack will continue immediately.
|
50
|
+
|
51
|
+
## Clients
|
52
|
+
|
53
|
+
It's recommended to put each client in a separate directory.
|
54
|
+
|
55
|
+
$HOME/.timr/client1
|
56
|
+
$HOME/.timr/client2
|
57
|
+
$HOME/.timr/client3
|
58
|
+
|
59
|
+
Use `-C` to change the directory in which Timr should operate:
|
60
|
+
|
61
|
+
timr -C "$HOME/.timr/client1"
|
62
|
+
|
63
|
+
Default:
|
64
|
+
|
65
|
+
$HOME/.timr/defaultc
|
66
|
+
|
67
|
+
## Commands
|
68
|
+
|
69
|
+
See `timr <command> --help` to read details about a specific command, or `timr help <command>` to open the man page for this command.
|
70
|
+
|
71
|
+
The man pages are also available online: <https://timr.fox21.at/man/timr.1.html>
|
72
|
+
|
73
|
+
### Start Command
|
74
|
+
|
75
|
+
The Start command always removes all Tracks from the Stack. If there is another current running Task this Task will be stopped and removed from the Stack.
|
76
|
+
|
77
|
+
timr start [<options>] [<task_id> [<track_id>]]
|
78
|
+
|
79
|
+
See more informations on the [timr-start(1)](https://timr.fox21.at/man/timr-start.1.html) man page.
|
80
|
+
|
81
|
+
### Stop Command
|
82
|
+
|
83
|
+
Stopps the current running Track and removes it from the Stack.
|
84
|
+
|
85
|
+
timr stop [<options>]
|
86
|
+
|
87
|
+
See more informations on the [timr-stop(1)](https://timr.fox21.at/man/timr-stop.1.html) man page.
|
88
|
+
|
89
|
+
### Pause Command
|
90
|
+
|
91
|
+
Pause the current running Track.
|
92
|
+
|
93
|
+
timr pause [<options>]
|
94
|
+
|
95
|
+
See more informations on the [timr-pause(1)](https://timr.fox21.at/man/timr-pause.1.html) man page.
|
96
|
+
|
97
|
+
### Continue Command
|
98
|
+
|
99
|
+
Continue the previous paused Track. When a Track will be continued (or *restarted*) it's actual a copy using the same message.
|
100
|
+
|
101
|
+
timr continue [<options>]
|
102
|
+
|
103
|
+
See more informations on the [timr-continue(1)](https://timr.fox21.at/man/timr-continue.1.html) man page.
|
104
|
+
|
105
|
+
### Push Command
|
106
|
+
|
107
|
+
Sometimes you need to work on a Task only temporary. You want to track the time for this as well. For example fixing a bug. When you fixed the bug you want to continue your actual work. Here comes `timr push` and `timr pop` into the game. It modifies the Stack. When you push a new Task the below Task will be paused. On pop the Top Task will be stopped and the next below will continue.
|
108
|
+
|
109
|
+
timr push [<options>] [<task_id> [<track_id>]]
|
110
|
+
|
111
|
+
See more informations on the [timr-push(1)](https://timr.fox21.at/man/timr-push.1.html) man page.
|
112
|
+
|
113
|
+
### Pop Command
|
114
|
+
|
115
|
+
Stop and pop the current running Track from the Stack.
|
116
|
+
|
117
|
+
timr pop [<options>]
|
118
|
+
|
119
|
+
See more informations on the [timr-pop(1)](https://timr.fox21.at/man/timr-pop.1.html) man page.
|
120
|
+
|
121
|
+
### Status Command
|
122
|
+
|
123
|
+
Print the current Stack status.
|
124
|
+
|
125
|
+
timr status [<options>]
|
126
|
+
|
127
|
+
See more informations on the [timr-status(1)](https://timr.fox21.at/man/timr-status.1.html) man page.
|
128
|
+
|
129
|
+
### Log Command
|
130
|
+
|
131
|
+
Show recent Tracks.
|
132
|
+
|
133
|
+
timr log [<options>]
|
134
|
+
|
135
|
+
See more informations on the [timr-log(1)](https://timr.fox21.at/man/timr-log.1.html) man page.
|
136
|
+
|
137
|
+
### Task Command
|
138
|
+
|
139
|
+
Show, add, edit, or remove a Task.
|
140
|
+
|
141
|
+
timr task <subcommand> [<options>] [<task_id>]
|
142
|
+
|
143
|
+
See more informations on the [timr-task(1)](https://timr.fox21.at/man/timr-task.1.html) man page.
|
144
|
+
|
145
|
+
### Track Command
|
146
|
+
|
147
|
+
Show, add, edit, move, or remove a Track.
|
148
|
+
|
149
|
+
timr track <subcommand> [<options>] [<track_id>]
|
150
|
+
|
151
|
+
See more informations on the [timr-track(1)](https://timr.fox21.at/man/timr-track.1.html) man page.
|
152
|
+
|
153
|
+
### Report Command
|
154
|
+
|
155
|
+
Export Tasks and Tracks.
|
156
|
+
|
157
|
+
timr report [<options>]
|
158
|
+
|
159
|
+
See more informations on the [timr-report(1)](https://timr.fox21.at/man/timr-report.1.html) man page.
|
160
|
+
|
161
|
+
## Workflow Example
|
162
|
+
|
163
|
+
Here is an example as shell commands how your workflow could look like while using Timr.
|
164
|
+
|
165
|
+
Before starting to work on a Task:
|
166
|
+
|
167
|
+
timr start
|
168
|
+
|
169
|
+
Do your work.
|
170
|
+
|
171
|
+
After finished your Task:
|
172
|
+
|
173
|
+
timr stop
|
174
|
+
|
175
|
+
But you like to name your Task at the beginning to know on what you worked:
|
176
|
+
|
177
|
+
timr start --name 'Refactor Star Wars'
|
178
|
+
|
179
|
+
In case you need to do several things on your Task provide a more specific message:
|
180
|
+
|
181
|
+
timr start --name 'Refactor Star Wars' --message 'This is what I am going to do.'
|
182
|
+
|
183
|
+
But maybe you have not set `--message` on `start`. So you can also set it on `stop`:
|
184
|
+
|
185
|
+
timr stop --message 'This is what I have done.'
|
186
|
+
|
187
|
+
## Bash Completion
|
188
|
+
|
189
|
+
Timr comes with a completion for Bash: `bin/timr_bash_completion.sh` file is included to the Timr gem. To get the full path to `bin/timr_bash_completion.sh` run:
|
190
|
+
|
191
|
+
echo $(timr --install-basepath)/bin/timr_bash_completion.sh
|
192
|
+
|
193
|
+
In the following examples replace `/path/to/bin/timr_bash_completion.sh` with the output of the executed `echo` command.
|
194
|
+
|
195
|
+
Create a link to this file in your `bash_completion.d` directory. Unter Linux the path is `/etc/bash_completion.d`. Under macOS the path is `/usr/local/etc/bash_completion.d`. In this example we will use the path for macOS:
|
196
|
+
|
197
|
+
ln -s /path/to/bin/timr_bash_completion.sh /usr/local/etc/bash_completion.d
|
198
|
+
|
199
|
+
Alternatively you can direct source from your `~/.bashrc` file:
|
200
|
+
|
201
|
+
```bash
|
202
|
+
if [ -f /path/to/bin/timr_bash_completion.sh ]; then
|
203
|
+
source /path/to/bin/timr_bash_completion.sh
|
204
|
+
fi
|
205
|
+
```
|
206
|
+
|
207
|
+
Do not forget to remove all links when deinstalling Timr.
|
4
208
|
|
5
209
|
## Project Links
|
6
210
|
|
7
|
-
- [
|
211
|
+
- [Homepage](https://timr.fox21.at/)
|
212
|
+
- [API Reference Mainpage](https://timr.fox21.at/api/)
|
213
|
+
- [Man pages](https://timr.fox21.at/man/timr.1.html)
|
214
|
+
- [Code Coverage](https://timr.fox21.at/coverage/)
|
215
|
+
- [GitHub Page](https://github.com/TheFox/timr)
|
216
|
+
- [RubyGems Page](https://rubygems.org/gems/timr)
|
8
217
|
- [Travis CI Repository](https://travis-ci.org/TheFox/timr)
|
9
218
|
|
219
|
+
## Contributing
|
220
|
+
|
221
|
+
See [Contributing](.github/CONTRIBUTING.md) page.
|
222
|
+
|
10
223
|
## License
|
11
224
|
|
12
|
-
Copyright (C) 2016 Christian Mayer <
|
225
|
+
Copyright (C) 2016 Christian Mayer <https://fox21.at>
|
13
226
|
|
14
227
|
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
15
228
|
|
data/bin/.gitignore
ADDED
data/bin/README.md
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# bin/ Directory Overview
|
2
|
+
|
3
|
+
| File | Description |
|
4
|
+
|------|-------------|
|
5
|
+
| build_api.sh | Build API documentation pages for <https://timr.fox21.at/api/>. |
|
6
|
+
| build_coverage.sh | Build code coverage for <https://timr.fox21.at/coverage/>. |
|
7
|
+
| build_info.sh | Build build.txt file for <https://timr.fox21.at/build.txt>. |
|
8
|
+
| build_man.sh | Build manual pages. |
|
9
|
+
| clean.sh | Clean up development files. |
|
10
|
+
| dev_setup.sh | Development setup. |
|
11
|
+
| install.sh | Install Timr Gem from source. |
|
12
|
+
| publish | Upload files to <https://timr.fox21.at>. |
|
13
|
+
| release.sh | Release gem to <https://rubygems.org/gems/timr>. |
|
14
|
+
| test.sh | Run Unit Tests. |
|
15
|
+
| timr | Timr Main Executable for end user. |
|
16
|
+
| timr_bash_completion.sh | Bash Completion |
|
17
|
+
| uninstall.sh | Uninstall Timr Gem. |
|
data/bin/build.sh
ADDED
data/bin/build_api.sh
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
# Build API documentation pages for https://timr.fox21.at/api/.
|
4
|
+
# Former https://timr.fox21.at/doc/.
|
5
|
+
|
6
|
+
SCRIPT_BASEDIR=$(dirname "$0")
|
7
|
+
|
8
|
+
|
9
|
+
set -e
|
10
|
+
which rdoc &> /dev/null || { echo 'ERROR: rdoc not found in PATH'; exit 1; }
|
11
|
+
|
12
|
+
cd "${SCRIPT_BASEDIR}/.."
|
13
|
+
|
14
|
+
rdoc --op api README.md lib/timr
|