zenhob-hcl 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.2.2
data/bin/hcl CHANGED
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'rubygems'
4
- require 'hcl'
3
+ require 'hcl/app'
5
4
 
6
- HCl.command *ARGV
5
+ HCl::App.command *ARGV
7
6
 
@@ -0,0 +1,3 @@
1
+ git://github.com/lutzky/trollop.git a8d63c816 # 1.10.2
2
+ git://github.com/mojombo/chronic.git 180e44763 # 0.3.0
3
+ git://github.com/JEG2/highline.git rel_1_5_1
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{hcl}
5
- s.version = "0.2.1"
5
+ s.version = "0.2.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Zack Hobson"]
9
- s.date = %q{2009-07-30}
9
+ s.date = %q{2009-08-09}
10
10
  s.default_executable = %q{hcl}
11
11
  s.description = %q{HCl is a command-line client for manipulating Harvest time sheets.}
12
12
  s.email = %q{zack@opensourcery.com}
@@ -21,11 +21,12 @@ Gem::Specification.new do |s|
21
21
  "LICENSE",
22
22
  "README.markdown",
23
23
  "Rakefile",
24
- "VERSION.yml",
24
+ "VERSION",
25
25
  "bin/hcl",
26
+ "deps.rip",
26
27
  "hcl.gemspec",
27
28
  "hcl_conf.yml.example",
28
- "lib/hcl.rb",
29
+ "lib/hcl/app.rb",
29
30
  "lib/hcl/day_entry.rb",
30
31
  "lib/hcl/project.rb",
31
32
  "lib/hcl/task.rb",
@@ -1,12 +1,15 @@
1
+ ## stdlib dependencies
1
2
  require 'yaml'
2
3
  require 'rexml/document'
3
4
  require 'net/http'
4
5
  require 'net/https'
5
6
 
7
+ ## gem dependencies
6
8
  require 'chronic'
7
9
  require 'trollop'
8
10
  require 'highline/import'
9
11
 
12
+ ## app dependencies
10
13
  require 'hcl/utility'
11
14
  require 'hcl/timesheet_resource'
12
15
  require 'hcl/project'
@@ -25,10 +28,10 @@ class Net::HTTP
25
28
  end
26
29
  end
27
30
 
28
- class HCl
29
- include Utility
31
+ module HCl
32
+ class App
33
+ include HCl::Utility
30
34
 
31
- VERSION_FILE = File.dirname(__FILE__) + '/../VERSION.yml'
32
35
  SETTINGS_FILE = "#{ENV['HOME']}/.hcl_settings"
33
36
  CONFIG_FILE = "#{ENV['HOME']}/.hcl_config"
34
37
 
@@ -39,38 +42,36 @@ class HCl
39
42
  end
40
43
 
41
44
  def run
42
- if @command
43
- if respond_to? @command
44
- result = send @command, *@args
45
- if not result.nil?
46
- if result.respond_to? :to_a
47
- puts result.to_a.join(', ')
48
- elsif result.respond_to? :to_s
49
- puts result
45
+ begin
46
+ if @command
47
+ if respond_to? @command
48
+ result = send @command, *@args
49
+ if not result.nil?
50
+ if result.respond_to? :to_a
51
+ puts result.to_a.join(', ')
52
+ elsif result.respond_to? :to_s
53
+ puts result
54
+ end
50
55
  end
56
+ else
57
+ raise UnknownCommand, "unrecognized command `#{@command}'"
51
58
  end
52
59
  else
53
- raise UnknownCommand, "unrecognized command `#{@command}'"
60
+ show
54
61
  end
55
- else
56
- show
62
+ rescue TimesheetResource::Failure => e
63
+ puts "Internal failure. #{e}"
64
+ exit 1
57
65
  end
58
66
  end
59
67
 
60
68
  def initialize
61
- @version = YAML::load(File.read(VERSION_FILE))
62
69
  read_config
63
70
  read_settings
64
71
  end
65
72
 
66
- def version
67
- [:major, :minor, :patch].map { |v| @version[v] }.join('.')
68
- end
69
-
70
73
  def process_args *args
71
- version_string = version
72
74
  Trollop::options(args) do
73
- version "HCl #{version_string}"
74
75
  stop_on %w[ show tasks set unset note add rm start stop ]
75
76
  banner <<-EOM
76
77
  HCl is a command-line client for manipulating Harvest time sheets.
@@ -228,5 +229,6 @@ EOM
228
229
  puts "\t#{as_hours total_hours}\ttotal"
229
230
  end
230
231
 
232
+ end
231
233
  end
232
234
 
@@ -1,7 +1,8 @@
1
1
 
2
- class HCl
2
+ module HCl
3
3
  class DayEntry < TimesheetResource
4
4
  include Utility
5
+
5
6
  # Get the time sheet entries for a given day. If no date is provided
6
7
  # defaults to today.
7
8
  def self.all date = nil
@@ -15,6 +16,7 @@ class HCl
15
16
 
16
17
  def self.from_xml xml
17
18
  doc = REXML::Document.new xml
19
+ raise Failure, "No root node in XML document: #{xml}" if doc.root.nil?
18
20
  Task.cache_tasks doc
19
21
  doc.root.elements.collect('//day_entry') do |day|
20
22
  new xml_to_hash(day)
@@ -25,9 +27,14 @@ class HCl
25
27
  def append_note new_notes
26
28
  # If I don't include hours it gets reset.
27
29
  # This doens't appear to be the case for task and project.
30
+ if notes.nil?
31
+ notes = new_notes
32
+ else
33
+ notes << " #{new_notes}"
34
+ end
28
35
  DayEntry.post("daily/update/#{id}", <<-EOD)
29
36
  <request>
30
- <notes>#{notes << " #{new_notes}"}</notes>
37
+ <notes>#{notes}</notes>
31
38
  <hours>#{hours}</hours>
32
39
  </request>
33
40
  EOD
@@ -1,4 +1,4 @@
1
- class HCl
1
+ module HCl
2
2
  class Task < TimesheetResource
3
3
  def self.cache_tasks doc
4
4
  tasks = []
@@ -1,5 +1,7 @@
1
- class HCl
1
+ module HCl
2
2
  class TimesheetResource
3
+ class Failure < Exception; end
4
+
3
5
  def self.configure opts = nil
4
6
  if opts
5
7
  self.login = opts['login']
@@ -1,4 +1,4 @@
1
- class HCl
1
+ module HCl
2
2
  module Utility
3
3
  # Convert from decimal to a string of the form HH:MM.
4
4
  def as_hours hours
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zenhob-hcl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zack Hobson
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-30 00:00:00 -07:00
12
+ date: 2009-08-09 00:00:00 -07:00
13
13
  default_executable: hcl
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -67,11 +67,12 @@ files:
67
67
  - LICENSE
68
68
  - README.markdown
69
69
  - Rakefile
70
- - VERSION.yml
70
+ - VERSION
71
71
  - bin/hcl
72
+ - deps.rip
72
73
  - hcl.gemspec
73
74
  - hcl_conf.yml.example
74
- - lib/hcl.rb
75
+ - lib/hcl/app.rb
75
76
  - lib/hcl/day_entry.rb
76
77
  - lib/hcl/project.rb
77
78
  - lib/hcl/task.rb
@@ -1,4 +0,0 @@
1
- ---
2
- :patch: 1
3
- :major: 0
4
- :minor: 2