summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.markdown8
-rw-r--r--lib/hcl.rb50
2 files changed, 34 insertions, 24 deletions
diff --git a/README.markdown b/README.markdown
index f387ac1..9b4577e 100644
--- a/README.markdown
+++ b/README.markdown
@@ -17,16 +17,18 @@ NOTE This software is nowhere near complete. To try it out:
* Ruby (tested with 1.8.7)
* RubyGems
+ * Trollop option-parsing library (gem install trollop)
* Chronic date-parsing library (gem install chronic)
## Usage
-NOTE only the show command is implemented
+NOTE that the only currently implemented commands are show, tasks and start.
hcl show [date]
- hcl add <project> <task> <duration> [msg]
+ hcl tasks
+ hcl start <task_id> [msg]
+ hcl add <task_id> <duration> [msg]
hcl rm [entry_id]
- hcl start <project> <task> [msg]
hcl stop [msg]
### Examples
diff --git a/lib/hcl.rb b/lib/hcl.rb
index 5505f57..8e4878c 100644
--- a/lib/hcl.rb
+++ b/lib/hcl.rb
@@ -5,6 +5,7 @@ require 'net/https'
require 'rubygems'
require 'chronic'
+require 'trollop'
require 'hcl/timesheet_resource'
require 'hcl/project'
@@ -12,6 +13,8 @@ require 'hcl/task'
require 'hcl/day_entry'
class HCl
+ VERSION = "0.1.0"
+
class UnknownCommand < StandardError; end
def self.conf_file= filename
@@ -19,17 +22,18 @@ class HCl
end
def self.command *args
- command = args.shift
- hcl = new(@@conf_file).process_args *args
- if command
- if hcl.respond_to? command
- hcl.send command, *args
+ hcl = new(@@conf_file).process_args(*args).run
+ end
+
+ def run
+ if @command
+ if respond_to? @command
+ send @command, *@args
else
- raise UnknownCommand, "unrecognized command `#{command}'"
+ raise UnknownCommand, "unrecognized command `#{@command}'"
end
else
- hcl.show
- return
+ show
end
end
@@ -38,10 +42,13 @@ class HCl
TimesheetResource.configure config
end
- def self.help
- puts <<-EOM
- Usage:
+ def process_args *args
+ Trollop::options(args) do
+ version "HCl #{VERSION}"
+ banner <<-EOM
+HCl is a command-line client for manipulating Harvest time sheets.
+Commands:
hcl show [date]
hcl tasks
hcl add <task> <duration> [msg]
@@ -49,17 +56,18 @@ class HCl
hcl start <task> [msg]
hcl stop [msg]
- Examples:
+Examples:
+ $ hcl tasks
+ $ hcl start 1234 this is my log message
+ $ hcl show yesterday
+ $ hcl show last tuesday
- hcl show 2009-07-15
- hcl show yesterday
- hcl show last tuesday
- EOM
- end
- def help; self.class.help; end
-
- def process_args *args
- # TODO process command-line args
+Options:
+EOM
+ stop_on %w[ show tasks add rm start stop ]
+ end
+ @command = args.shift
+ @args = args
self
end