Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ericgj/trackd
Command line time tracking with Thin/Sinatra daemon
https://github.com/ericgj/trackd
Last synced: 9 days ago
JSON representation
Command line time tracking with Thin/Sinatra daemon
- Host: GitHub
- URL: https://github.com/ericgj/trackd
- Owner: ericgj
- License: mit
- Created: 2010-10-26T22:12:52.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2011-04-22T00:43:11.000Z (almost 14 years ago)
- Last Synced: 2024-11-15T12:27:31.573Z (2 months ago)
- Language: Ruby
- Homepage:
- Size: 162 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.markdown
- License: LICENSE
Awesome Lists containing this project
README
# trackd
A rewrite of the command-line ReinH-track (voxdolo/track)
as a skinny daemon + command-line client.## Usage
# start server daemon
trackd -d start
# start time => POST /1/projects/my-project/logs?task=config%20dbase
track start my-project config dbase
# or simply
track my-project config dbase
# stop time on current => PUT /1/current/logs
track stop
# stop time with message => PUT /1/current/logs?message=I%20did%20some%20work
track stop "I did some work"
# restart last => POST /1/last/logs
track restart
# print report of times by project and task => GET /1/projects
track cat
# print summary report by project => GET /1/status
track status
# print summary report for project by task => GET /1/projects/my-project/status
track status my-project
# print summary report by project and task => GET /1/projects/my-project/status?task=config%20dbase
track status my-project config dbase
# add time to named task => PUT /1/projects/my-project/logs?task=config%20dbase&time=30
track add 00:30 my-project config dbase
# subtract time from last => PUT /1/last/logs?time=-60
track sub 01:00
# add shortcut
track shortcut add mp my-project
## REST API
(v1 draft - not fully implemented)Command Verb URL Params Redirect to
start x y POST /1/projects/x/logs task=y /1/logs/:id (1)
restart POST /1/last/logs - /1/logs/:id
stop PUT /1/current/logs - /1/logs/:id
stop m PUT /1/current/logs/?message=m - /1/logs/:id
add t x y PUT /1/projects/x/logs task=y&time=t /1/logs/:id
add t PUT /1/last/logs time=t /1/logs/:id
sub t x y PUT /1/projects/x/logs task=y&time=-t /1/logs/:id
sub t PUT /1/last/logs time=-t /1/logs/:id
cat GET /1/logs (2) - -
status GET /1/status (3) - -
status x GET /1/projects/x/status (4) - -
status x y GET /1/projects/x/status (5) task=y -
All messages are in JSON format.
(1) log message:
id:
task :
started_at :project-logs message -- not currently used, GET /1/projects
-
name :
logs :
-
task :
started_at :
stopped_at :
adjusted :
duration :
message :
-
# ...
name :
logs :
- # ...
# ...
(3) server status message (note projects are ordered by last_started_at desc, project name)server_uptime :
total_duration :
current_log:
id:
task :
started_at :
stopped_at :
adjusted :
duration :
message :
project :
id:
name:
projects :
-
name :
last_task :
last_started_at :
last_stopped_at :
last_duration :
total_duration :
-
# ...
(4) project status message: (not yet implemented)name :
total_duration :
tasks :
-
task :
last_started_at :
last_stopped_at :
last_duration :
total_duration :
-
# ...
(5) project-task status message: (not yet implemented)
task :
last_started_at :
last_stopped_at :
last_duration :
total_duration :
project :
id:
name: