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 +1 -0
- data/bin/hcl +2 -3
- data/deps.rip +3 -0
- data/hcl.gemspec +5 -4
- data/lib/{hcl.rb → hcl/app.rb} +23 -21
- data/lib/hcl/day_entry.rb +9 -2
- data/lib/hcl/task.rb +1 -1
- data/lib/hcl/timesheet_resource.rb +3 -1
- data/lib/hcl/utility.rb +1 -1
- metadata +5 -4
- data/VERSION.yml +0 -4
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.2.2
|
data/bin/hcl
CHANGED
data/deps.rip
ADDED
data/hcl.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{hcl}
|
5
|
-
s.version = "0.2.
|
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-
|
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
|
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",
|
data/lib/{hcl.rb → hcl/app.rb}
RENAMED
@@ -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
|
-
|
29
|
-
|
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
|
-
|
43
|
-
if
|
44
|
-
|
45
|
-
|
46
|
-
if result.
|
47
|
-
|
48
|
-
|
49
|
-
|
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
|
-
|
60
|
+
show
|
54
61
|
end
|
55
|
-
|
56
|
-
|
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
|
|
data/lib/hcl/day_entry.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
|
2
|
-
|
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
|
37
|
+
<notes>#{notes}</notes>
|
31
38
|
<hours>#{hours}</hours>
|
32
39
|
</request>
|
33
40
|
EOD
|
data/lib/hcl/task.rb
CHANGED
data/lib/hcl/utility.rb
CHANGED
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.
|
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-
|
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
|
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
|
data/VERSION.yml
DELETED