hcl 0.2.3 → 0.3.0
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/README.markdown +5 -2
- data/Rakefile +4 -1
- data/VERSION +1 -1
- data/hcl.gemspec +14 -5
- data/lib/hcl/app.rb +1 -0
- data/lib/hcl/timesheet_resource.rb +10 -8
- data/test/test_helper.rb +1 -0
- metadata +67 -22
data/README.markdown
CHANGED
@@ -7,7 +7,9 @@ HCl is a command-line tool for interacting with Harvest time sheets using the
|
|
7
7
|
|
8
8
|
## Quick Start
|
9
9
|
|
10
|
-
|
10
|
+
You can install hcl from Gemcutter:
|
11
|
+
|
12
|
+
$ gem install hcl
|
11
13
|
$ hcl show [date]
|
12
14
|
|
13
15
|
### Prerequisites
|
@@ -15,7 +17,8 @@ HCl is a command-line tool for interacting with Harvest time sheets using the
|
|
15
17
|
* Ruby (tested with 1.8.7)
|
16
18
|
* Ruby OpenSSL support (in debian/ubuntu: apt-get install libopenssl-ruby)
|
17
19
|
* Ruby extension building support (in debian/ubuntu: apt-get install ruby-dev)
|
18
|
-
* RubyGems
|
20
|
+
* RubyGems 1.3.3
|
21
|
+
* Gemcutter (gem install gemcutter; gem tumble)
|
19
22
|
* Trollop option-parsing library (gem install trollop)
|
20
23
|
* Chronic date-parsing library (gem install chronic)
|
21
24
|
* HighLine console input library (gem install highline)
|
data/Rakefile
CHANGED
@@ -18,7 +18,10 @@ begin
|
|
18
18
|
gem.add_dependency "trollop", ">= 1.10.2"
|
19
19
|
gem.add_dependency "chronic", ">= 0.2.3"
|
20
20
|
gem.add_dependency "highline", ">= 1.5.1"
|
21
|
+
gem.add_development_dependency "shoulda"
|
22
|
+
gem.add_development_dependency "mocha"
|
21
23
|
end
|
24
|
+
Jeweler::GemcutterTasks.new
|
22
25
|
rescue LoadError
|
23
|
-
puts "Jeweler not available. Install it with: sudo gem install
|
26
|
+
puts "Jeweler not available. Install it with: sudo gem install jeweler"
|
24
27
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/hcl.gemspec
CHANGED
@@ -1,12 +1,15 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
1
4
|
# -*- encoding: utf-8 -*-
|
2
5
|
|
3
6
|
Gem::Specification.new do |s|
|
4
7
|
s.name = %q{hcl}
|
5
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
6
9
|
|
7
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
11
|
s.authors = ["Zack Hobson"]
|
9
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-04-02}
|
10
13
|
s.default_executable = %q{hcl}
|
11
14
|
s.description = %q{HCl is a command-line client for manipulating Harvest time sheets.}
|
12
15
|
s.email = %q{zack@opensourcery.com}
|
@@ -38,11 +41,10 @@ Gem::Specification.new do |s|
|
|
38
41
|
"test/test_helper.rb",
|
39
42
|
"test/utility_test.rb"
|
40
43
|
]
|
41
|
-
s.has_rdoc = true
|
42
44
|
s.homepage = %q{http://github.com/zenhob/hcl}
|
43
45
|
s.rdoc_options = ["--charset=UTF-8"]
|
44
46
|
s.require_paths = ["lib"]
|
45
|
-
s.rubygems_version = %q{1.3.
|
47
|
+
s.rubygems_version = %q{1.3.6}
|
46
48
|
s.summary = %q{Harvest timesheets from the command-line}
|
47
49
|
s.test_files = [
|
48
50
|
"test/app_test.rb",
|
@@ -53,23 +55,30 @@ Gem::Specification.new do |s|
|
|
53
55
|
|
54
56
|
if s.respond_to? :specification_version then
|
55
57
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
56
|
-
s.specification_version =
|
58
|
+
s.specification_version = 3
|
57
59
|
|
58
60
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
59
61
|
s.add_runtime_dependency(%q<termios>, [">= 0"])
|
60
62
|
s.add_runtime_dependency(%q<trollop>, [">= 1.10.2"])
|
61
63
|
s.add_runtime_dependency(%q<chronic>, [">= 0.2.3"])
|
62
64
|
s.add_runtime_dependency(%q<highline>, [">= 1.5.1"])
|
65
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
66
|
+
s.add_development_dependency(%q<mocha>, [">= 0"])
|
63
67
|
else
|
64
68
|
s.add_dependency(%q<termios>, [">= 0"])
|
65
69
|
s.add_dependency(%q<trollop>, [">= 1.10.2"])
|
66
70
|
s.add_dependency(%q<chronic>, [">= 0.2.3"])
|
67
71
|
s.add_dependency(%q<highline>, [">= 1.5.1"])
|
72
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
73
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
68
74
|
end
|
69
75
|
else
|
70
76
|
s.add_dependency(%q<termios>, [">= 0"])
|
71
77
|
s.add_dependency(%q<trollop>, [">= 1.10.2"])
|
72
78
|
s.add_dependency(%q<chronic>, [">= 0.2.3"])
|
73
79
|
s.add_dependency(%q<highline>, [">= 1.5.1"])
|
80
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
81
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
74
82
|
end
|
75
83
|
end
|
84
|
+
|
data/lib/hcl/app.rb
CHANGED
@@ -133,6 +133,7 @@ EOM
|
|
133
133
|
config['login'] = ask("Email Address: ")
|
134
134
|
config['password'] = ask("Password: ") { |q| q.echo = false }
|
135
135
|
config['subdomain'] = ask("Subdomain: ")
|
136
|
+
config['ssl'] = %w(y yes).include?(ask("Use SSL? (y/n): ").downcase)
|
136
137
|
TimesheetResource.configure config
|
137
138
|
write_config config
|
138
139
|
end
|
@@ -7,13 +7,14 @@ module HCl
|
|
7
7
|
self.login = opts['login']
|
8
8
|
self.password = opts['password']
|
9
9
|
self.subdomain = opts['subdomain']
|
10
|
+
self.ssl = opts['ssl']
|
10
11
|
else
|
11
12
|
yield self
|
12
13
|
end
|
13
14
|
end
|
14
15
|
|
15
16
|
# configuration accessors
|
16
|
-
%w[ login password subdomain ].each do |config_var|
|
17
|
+
%w[ login password subdomain ssl ].each do |config_var|
|
17
18
|
class_eval <<-EOC
|
18
19
|
def self.#{config_var}= arg
|
19
20
|
@@#{config_var} = arg
|
@@ -29,29 +30,30 @@ module HCl
|
|
29
30
|
end
|
30
31
|
|
31
32
|
def self.get action
|
32
|
-
|
33
|
+
http_do Net::HTTP::Get, action
|
33
34
|
end
|
34
35
|
|
35
36
|
def self.post action, data
|
36
|
-
|
37
|
+
http_do Net::HTTP::Post, action, data
|
37
38
|
end
|
38
39
|
|
39
|
-
def self.
|
40
|
-
https = Net::HTTP.new "#{subdomain}.harvestapp.com", 443
|
40
|
+
def self.http_do method_class, action, data = nil
|
41
|
+
https = Net::HTTP.new "#{subdomain}.harvestapp.com", (ssl ? 443 : 80)
|
41
42
|
request = method_class.new "/#{action}"
|
42
|
-
https.use_ssl =
|
43
|
+
https.use_ssl = ssl
|
43
44
|
request.basic_auth login, password
|
44
45
|
request.content_type = 'application/xml'
|
45
46
|
request['Accept'] = 'application/xml'
|
46
47
|
response = https.request request, data
|
47
|
-
return response.body
|
48
48
|
if response.kind_of? Net::HTTPSuccess
|
49
49
|
response.body
|
50
|
+
elsif response.kind_of? Net::HTTPFound
|
51
|
+
raise "Redirected in the request. Perhaps your ssl configuration variable is set incorrectly?"
|
50
52
|
else
|
51
53
|
raise 'failure'
|
52
54
|
end
|
53
55
|
end
|
54
|
-
|
56
|
+
|
55
57
|
def id
|
56
58
|
@data[:id]
|
57
59
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hcl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
version: 0.3.0
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Zack Hobson
|
@@ -9,49 +14,87 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date:
|
17
|
+
date: 2010-04-02 00:00:00 -07:00
|
13
18
|
default_executable: hcl
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: termios
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
23
29
|
version: "0"
|
24
|
-
|
30
|
+
type: :runtime
|
31
|
+
version_requirements: *id001
|
25
32
|
- !ruby/object:Gem::Dependency
|
26
33
|
name: trollop
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
34
|
+
prerelease: false
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - ">="
|
32
38
|
- !ruby/object:Gem::Version
|
39
|
+
segments:
|
40
|
+
- 1
|
41
|
+
- 10
|
42
|
+
- 2
|
33
43
|
version: 1.10.2
|
34
|
-
|
44
|
+
type: :runtime
|
45
|
+
version_requirements: *id002
|
35
46
|
- !ruby/object:Gem::Dependency
|
36
47
|
name: chronic
|
37
|
-
|
38
|
-
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
48
|
+
prerelease: false
|
49
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
50
|
requirements:
|
41
51
|
- - ">="
|
42
52
|
- !ruby/object:Gem::Version
|
53
|
+
segments:
|
54
|
+
- 0
|
55
|
+
- 2
|
56
|
+
- 3
|
43
57
|
version: 0.2.3
|
44
|
-
|
58
|
+
type: :runtime
|
59
|
+
version_requirements: *id003
|
45
60
|
- !ruby/object:Gem::Dependency
|
46
61
|
name: highline
|
47
|
-
|
48
|
-
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
62
|
+
prerelease: false
|
63
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
64
|
requirements:
|
51
65
|
- - ">="
|
52
66
|
- !ruby/object:Gem::Version
|
67
|
+
segments:
|
68
|
+
- 1
|
69
|
+
- 5
|
70
|
+
- 1
|
53
71
|
version: 1.5.1
|
54
|
-
|
72
|
+
type: :runtime
|
73
|
+
version_requirements: *id004
|
74
|
+
- !ruby/object:Gem::Dependency
|
75
|
+
name: shoulda
|
76
|
+
prerelease: false
|
77
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
segments:
|
82
|
+
- 0
|
83
|
+
version: "0"
|
84
|
+
type: :development
|
85
|
+
version_requirements: *id005
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
name: mocha
|
88
|
+
prerelease: false
|
89
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
segments:
|
94
|
+
- 0
|
95
|
+
version: "0"
|
96
|
+
type: :development
|
97
|
+
version_requirements: *id006
|
55
98
|
description: HCl is a command-line client for manipulating Harvest time sheets.
|
56
99
|
email: zack@opensourcery.com
|
57
100
|
executables:
|
@@ -96,20 +139,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
139
|
requirements:
|
97
140
|
- - ">="
|
98
141
|
- !ruby/object:Gem::Version
|
142
|
+
segments:
|
143
|
+
- 0
|
99
144
|
version: "0"
|
100
|
-
version:
|
101
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
146
|
requirements:
|
103
147
|
- - ">="
|
104
148
|
- !ruby/object:Gem::Version
|
149
|
+
segments:
|
150
|
+
- 0
|
105
151
|
version: "0"
|
106
|
-
version:
|
107
152
|
requirements: []
|
108
153
|
|
109
154
|
rubyforge_project:
|
110
|
-
rubygems_version: 1.3.
|
155
|
+
rubygems_version: 1.3.6
|
111
156
|
signing_key:
|
112
|
-
specification_version:
|
157
|
+
specification_version: 3
|
113
158
|
summary: Harvest timesheets from the command-line
|
114
159
|
test_files:
|
115
160
|
- test/app_test.rb
|