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.
@@ -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
- $ gem install zenhob-hcl --source=http://gems.github.com
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 technicalpickles-jeweler -s http://gems.github.com"
26
+ puts "Jeweler not available. Install it with: sudo gem install jeweler"
24
27
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.3
1
+ 0.3.0
@@ -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.2.3"
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{2009-08-23}
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.1}
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 = 2
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
+
@@ -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
- https_do Net::HTTP::Get, action
33
+ http_do Net::HTTP::Get, action
33
34
  end
34
35
 
35
36
  def self.post action, data
36
- https_do Net::HTTP::Post, action, data
37
+ http_do Net::HTTP::Post, action, data
37
38
  end
38
39
 
39
- def self.https_do method_class, action, data = nil
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 = true
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
@@ -1,5 +1,6 @@
1
1
  $:.unshift(File.dirname(__FILE__) + '/../lib')
2
2
 
3
+ require 'rubygems'
3
4
  require 'test/unit'
4
5
  require 'hcl/app'
5
6
  require 'shoulda'
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hcl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
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: 2009-08-23 00:00:00 -07:00
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
- type: :runtime
18
- version_requirement:
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
- version:
30
+ type: :runtime
31
+ version_requirements: *id001
25
32
  - !ruby/object:Gem::Dependency
26
33
  name: trollop
27
- type: :runtime
28
- version_requirement:
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
- version:
44
+ type: :runtime
45
+ version_requirements: *id002
35
46
  - !ruby/object:Gem::Dependency
36
47
  name: chronic
37
- type: :runtime
38
- version_requirement:
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
- version:
58
+ type: :runtime
59
+ version_requirements: *id003
45
60
  - !ruby/object:Gem::Dependency
46
61
  name: highline
47
- type: :runtime
48
- version_requirement:
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
- version:
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.5
155
+ rubygems_version: 1.3.6
111
156
  signing_key:
112
- specification_version: 2
157
+ specification_version: 3
113
158
  summary: Harvest timesheets from the command-line
114
159
  test_files:
115
160
  - test/app_test.rb