hcl 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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