hcl 0.3.1 → 0.3.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/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: