diff options
| -rw-r--r-- | README.markdown | 11 | ||||
| -rw-r--r-- | lib/hcl.rb | 14 | ||||
| -rw-r--r-- | lib/hcl/day_entry.rb | 15 | ||||
| -rw-r--r-- | lib/hcl/task.rb | 1 |
4 files changed, 36 insertions, 5 deletions
diff --git a/README.markdown b/README.markdown index 4067be9..f1e4ccc 100644 --- a/README.markdown +++ b/README.markdown @@ -20,16 +20,16 @@ NOTE This software is nowhere near complete. To try it out: ## Usage -NOTE that /add/, /rm/ and /stop/ are not yet implemented. +NOTE that /add/ and /rm/ are not yet implemented. hcl show [date] hcl tasks hcl set <key> <value ...> hcl unset <key> hcl start (<task_alias> | <project_id> <task_id>) [msg] + hcl stop hcl add (<task_alias> | <project_id> <task_id>) <duration> [msg] hcl rm [entry_id] - hcl stop [msg] ### Starting a Timer @@ -54,6 +54,13 @@ identify a task, HCl supports task aliases: $ hcl set task.xdev 1234 5678 $ hcl start xdev adding a new feature +### Stopping a Timer + +The following command will stop a running timer (currently only one timer at +a time is supported): + + $ hcl stop + ### Date Formats Dates can be expressed in a variety of ways. See the [Chronic documentation][2] @@ -122,12 +122,23 @@ EOM puts "Started timer for #{task}" end + def stop + entry = DayEntry.with_timer + if entry + entry.toggle + puts "Stopped #{entry}" + else + puts "No running timers found." + end + end + def show *args date = args.empty? ? nil : Chronic.parse(args.join(' ')) total_hours = 0.0 DayEntry.all(date).each do |day| # TODO more information and formatting options - puts "\t#{as_hours day.hours}\t#{day.project} #{day.notes}"[0..78] + running = day.running? ? '(running) ' : '' + puts "\t#{as_hours day.hours}\t#{running}#{day.project} #{day.notes}"[0..78] total_hours = total_hours + day.hours.to_f end puts "\t" + '-' * 13 @@ -145,7 +156,6 @@ EOM end # TODO implement the following commands - alias stop not_implemented alias add not_implemented alias rm not_implemented diff --git a/lib/hcl/day_entry.rb b/lib/hcl/day_entry.rb index e23f7e9..42f52f4 100644 --- a/lib/hcl/day_entry.rb +++ b/lib/hcl/day_entry.rb @@ -15,14 +15,27 @@ class HCl def self.from_xml xml doc = REXML::Document.new xml Task.cache_tasks doc - doc.root.elements.collect('day_entries/day_entry') do |day| + doc.root.elements.collect('*/day_entry') do |day| new xml_to_hash(day) end end + def self.with_timer + all.detect {|t| t.running? } + end + + def running? + !@data[:timer_started_at].nil? && !@data[:timer_started_at].empty? + end + def initialize *args super # TODO cache client/project names and ids end + + def toggle + DayEntry.get("daily/timer/#{id}") + self + end end end diff --git a/lib/hcl/task.rb b/lib/hcl/task.rb index 1a742ce..5923867 100644 --- a/lib/hcl/task.rb +++ b/lib/hcl/task.rb @@ -38,6 +38,7 @@ class HCl EOT days.first end + end end |
