hcl 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +5 -0
- data/Rakefile +0 -1
- data/VERSION +1 -1
- data/lib/hcl/app.rb +10 -7
- data/lib/hcl/commands.rb +2 -1
- data/lib/hcl/timesheet_resource.rb +3 -3
- data/test/app_test.rb +1 -1
- metadata +14 -28
data/CHANGELOG
CHANGED
data/Rakefile
CHANGED
@@ -14,7 +14,6 @@ begin
|
|
14
14
|
gem.email = "zack@opensourcery.com"
|
15
15
|
gem.homepage = "http://github.com/zenhob/hcl"
|
16
16
|
gem.authors = ["Zack Hobson"]
|
17
|
-
gem.add_dependency "termios"
|
18
17
|
gem.add_dependency "trollop", ">= 1.10.2"
|
19
18
|
gem.add_dependency "chronic", ">= 0.2.3"
|
20
19
|
gem.add_dependency "highline", ">= 1.5.1"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
data/lib/hcl/app.rb
CHANGED
@@ -54,7 +54,7 @@ module HCl
|
|
54
54
|
# @param [#to_s] command name of command
|
55
55
|
# @return [true, false]
|
56
56
|
def command? command
|
57
|
-
Commands.
|
57
|
+
Commands.method_defined? command
|
58
58
|
end
|
59
59
|
|
60
60
|
# Start the application.
|
@@ -64,8 +64,8 @@ module HCl
|
|
64
64
|
if command? @command
|
65
65
|
result = send @command, *@args
|
66
66
|
if not result.nil?
|
67
|
-
if result.respond_to? :
|
68
|
-
puts result.
|
67
|
+
if result.respond_to? :join
|
68
|
+
puts result.join(', ')
|
69
69
|
elsif result.respond_to? :to_s
|
70
70
|
puts result
|
71
71
|
end
|
@@ -80,8 +80,11 @@ module HCl
|
|
80
80
|
rescue RuntimeError => e
|
81
81
|
STDERR.puts "Error: #{e}"
|
82
82
|
exit 1
|
83
|
+
rescue SocketError => e
|
84
|
+
STDERR.puts "Connection failed. (#{e.message})"
|
85
|
+
exit 1
|
83
86
|
rescue TimesheetResource::Failure => e
|
84
|
-
STDERR.puts "
|
87
|
+
STDERR.puts "API failure: #{e}"
|
85
88
|
exit 1
|
86
89
|
end
|
87
90
|
end
|
@@ -133,9 +136,9 @@ EOM
|
|
133
136
|
else
|
134
137
|
config = {}
|
135
138
|
puts "Please specify your Harvest credentials.\n"
|
136
|
-
config['login'] = ask("Email Address: ")
|
137
|
-
config['password'] = ask("Password: ") { |q| q.echo = false }
|
138
|
-
config['subdomain'] = ask("Subdomain: ")
|
139
|
+
config['login'] = ask("Email Address: ").to_s
|
140
|
+
config['password'] = ask("Password: ") { |q| q.echo = false }.to_s
|
141
|
+
config['subdomain'] = ask("Subdomain: ").to_s
|
139
142
|
config['ssl'] = %w(y yes).include?(ask("Use SSL? (y/n): ").downcase)
|
140
143
|
TimesheetResource.configure config
|
141
144
|
write_config config
|
data/lib/hcl/commands.rb
CHANGED
@@ -54,9 +54,10 @@ module HCl
|
|
54
54
|
puts "Started timer for #{timer} (at #{current_time})"
|
55
55
|
end
|
56
56
|
|
57
|
-
def stop
|
57
|
+
def stop *args
|
58
58
|
entry = DayEntry.with_timer
|
59
59
|
if entry
|
60
|
+
entry.append_note(*args.join(' ')) if args.any?
|
60
61
|
entry.toggle
|
61
62
|
puts "Stopped #{entry} (at #{current_time})"
|
62
63
|
else
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module HCl
|
2
2
|
class TimesheetResource
|
3
|
-
class Failure <
|
3
|
+
class Failure < StandardError; end
|
4
4
|
|
5
5
|
def self.configure opts = nil
|
6
6
|
if opts
|
@@ -48,9 +48,9 @@ module HCl
|
|
48
48
|
if response.kind_of? Net::HTTPSuccess
|
49
49
|
response.body
|
50
50
|
elsif response.kind_of? Net::HTTPFound
|
51
|
-
raise "Redirected in the request. Perhaps your ssl configuration variable is set incorrectly?"
|
51
|
+
raise Failure, "Redirected in the request. Perhaps your ssl configuration variable is set incorrectly?"
|
52
52
|
else
|
53
|
-
raise
|
53
|
+
raise Failure, "Unexpected response from the upstream API"
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
data/test/app_test.rb
CHANGED
@@ -3,6 +3,6 @@ class AppTest < Test::Unit::TestCase
|
|
3
3
|
|
4
4
|
should "permit commands from the HCl::Commands module" do
|
5
5
|
app = HCl::App.new
|
6
|
-
assert HCl::Commands.instance_methods.all? { |c| app.command? c }
|
6
|
+
assert HCl::Commands.instance_methods.all? { |c| app.command? c }, 'all methods are commands'
|
7
7
|
end
|
8
8
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hcl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 2
|
10
|
+
version: 0.3.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Zack Hobson
|
@@ -15,27 +15,13 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-12-30 00:00:00 -08:00
|
19
19
|
default_executable: hcl
|
20
20
|
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
22
|
-
name: termios
|
23
|
-
prerelease: false
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
33
|
-
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
21
|
- !ruby/object:Gem::Dependency
|
36
22
|
name: trollop
|
37
23
|
prerelease: false
|
38
|
-
requirement: &
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
39
25
|
none: false
|
40
26
|
requirements:
|
41
27
|
- - ">="
|
@@ -47,11 +33,11 @@ dependencies:
|
|
47
33
|
- 2
|
48
34
|
version: 1.10.2
|
49
35
|
type: :runtime
|
50
|
-
version_requirements: *
|
36
|
+
version_requirements: *id001
|
51
37
|
- !ruby/object:Gem::Dependency
|
52
38
|
name: chronic
|
53
39
|
prerelease: false
|
54
|
-
requirement: &
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
55
41
|
none: false
|
56
42
|
requirements:
|
57
43
|
- - ">="
|
@@ -63,11 +49,11 @@ dependencies:
|
|
63
49
|
- 3
|
64
50
|
version: 0.2.3
|
65
51
|
type: :runtime
|
66
|
-
version_requirements: *
|
52
|
+
version_requirements: *id002
|
67
53
|
- !ruby/object:Gem::Dependency
|
68
54
|
name: highline
|
69
55
|
prerelease: false
|
70
|
-
requirement: &
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
71
57
|
none: false
|
72
58
|
requirements:
|
73
59
|
- - ">="
|
@@ -79,11 +65,11 @@ dependencies:
|
|
79
65
|
- 1
|
80
66
|
version: 1.5.1
|
81
67
|
type: :runtime
|
82
|
-
version_requirements: *
|
68
|
+
version_requirements: *id003
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: shoulda
|
85
71
|
prerelease: false
|
86
|
-
requirement: &
|
72
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
87
73
|
none: false
|
88
74
|
requirements:
|
89
75
|
- - ">="
|
@@ -93,11 +79,11 @@ dependencies:
|
|
93
79
|
- 0
|
94
80
|
version: "0"
|
95
81
|
type: :development
|
96
|
-
version_requirements: *
|
82
|
+
version_requirements: *id004
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: mocha
|
99
85
|
prerelease: false
|
100
|
-
requirement: &
|
86
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
101
87
|
none: false
|
102
88
|
requirements:
|
103
89
|
- - ">="
|
@@ -107,7 +93,7 @@ dependencies:
|
|
107
93
|
- 0
|
108
94
|
version: "0"
|
109
95
|
type: :development
|
110
|
-
version_requirements: *
|
96
|
+
version_requirements: *id005
|
111
97
|
description: HCl is a command-line client for manipulating Harvest time sheets.
|
112
98
|
email: zack@opensourcery.com
|
113
99
|
executables:
|