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 CHANGED
@@ -1,5 +1,10 @@
1
1
  = Recent Changes in HCl
2
2
 
3
+ == v0.3.2
4
+
5
+ * fixed support for modern Rubies
6
+ * it's now possible to provide a message with the stop command
7
+
3
8
  == v0.3.1
4
9
 
5
10
  * use STDERR instead of STDOUT for error reporting
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
1
+ 0.3.2
@@ -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.instance_methods.include? command.to_s
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? :to_a
68
- puts result.to_a.join(', ')
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 "Internal failure. #{e}"
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
@@ -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 < Exception; end
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 'failure'
53
+ raise Failure, "Unexpected response from the upstream API"
54
54
  end
55
55
  end
56
56
 
@@ -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: 17
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 1
10
- version: 0.3.1
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-07-13 00:00:00 -07:00
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: &id002 !ruby/object:Gem::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: *id002
36
+ version_requirements: *id001
51
37
  - !ruby/object:Gem::Dependency
52
38
  name: chronic
53
39
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::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: *id003
52
+ version_requirements: *id002
67
53
  - !ruby/object:Gem::Dependency
68
54
  name: highline
69
55
  prerelease: false
70
- requirement: &id004 !ruby/object:Gem::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: *id004
68
+ version_requirements: *id003
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: shoulda
85
71
  prerelease: false
86
- requirement: &id005 !ruby/object:Gem::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: *id005
82
+ version_requirements: *id004
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: mocha
99
85
  prerelease: false
100
- requirement: &id006 !ruby/object:Gem::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: *id006
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: