toolshed 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +11 -0
  4. data/.toolshedrc.sample +32 -0
  5. data/README.md +159 -2
  6. data/Rakefile +3 -3
  7. data/bin/toolshed +6 -1
  8. data/lib/toolshed.rb +38 -28
  9. data/lib/toolshed/base.rb +33 -11
  10. data/lib/toolshed/cli.rb +30 -38
  11. data/lib/toolshed/client.rb +87 -293
  12. data/lib/toolshed/commands/base.rb +65 -23
  13. data/lib/toolshed/commands/checkout_branch.rb +15 -2
  14. data/lib/toolshed/commands/create_branch.rb +34 -29
  15. data/lib/toolshed/commands/create_pivotal_tracker_note.rb +9 -3
  16. data/lib/toolshed/commands/create_pull_request.rb +115 -68
  17. data/lib/toolshed/commands/create_ticket_comment.rb +17 -1
  18. data/lib/toolshed/commands/delete_branch.rb +34 -3
  19. data/lib/toolshed/commands/get_daily_time_update.rb +20 -3
  20. data/lib/toolshed/commands/list_branches.rb +16 -5
  21. data/lib/toolshed/commands/push_branch.rb +28 -9
  22. data/lib/toolshed/commands/rename_branch.rb +29 -0
  23. data/lib/toolshed/commands/ssh.rb +44 -3
  24. data/lib/toolshed/commands/ticket_information.rb +30 -4
  25. data/lib/toolshed/commands/update_pivotal_tracker_story_status.rb +9 -3
  26. data/lib/toolshed/commands/update_ticket_status.rb +8 -2
  27. data/lib/toolshed/entry_point.rb +89 -0
  28. data/lib/toolshed/git.rb +59 -0
  29. data/lib/toolshed/git/branch.rb +224 -0
  30. data/lib/toolshed/git/github.rb +45 -57
  31. data/lib/toolshed/git/validator.rb +14 -0
  32. data/lib/toolshed/logger.rb +46 -0
  33. data/lib/toolshed/password.rb +11 -6
  34. data/lib/toolshed/server_administration/ssh.rb +4 -2
  35. data/lib/toolshed/ticket_tracking/jira.rb +8 -6
  36. data/lib/toolshed/ticket_tracking/pivotal_tracker.rb +8 -6
  37. data/lib/toolshed/time_tracking/harvest.rb +8 -14
  38. data/lib/toolshed/version.rb +25 -1
  39. data/test/commands/checkout_branch_test.rb +11 -7
  40. data/test/commands/create_branch_test.rb +29 -24
  41. data/test/commands/create_pull_request_test.rb +39 -31
  42. data/test/commands/delete_branch_test.rb +35 -25
  43. data/test/commands/get_daily_time_update_test.rb +8 -8
  44. data/test/commands/push_branch_test.rb +27 -15
  45. data/test/commands/rename_branch_test.rb +59 -0
  46. data/test/git/git_helper.rb +5 -5
  47. data/test/git/git_test.rb +36 -31
  48. data/test/git/github_test.rb +9 -46
  49. data/test/helper.rb +11 -11
  50. data/test/server_administration/ssh_test.rb +1 -0
  51. data/test/ticket_tracking/jira_test.rb +18 -16
  52. data/test/time_tracking/harvest_test.rb +8 -6
  53. data/toolshed.gemspec +23 -20
  54. metadata +95 -46
  55. data/bin/toolshed.rb +0 -261
  56. data/lib/toolshed/git/git.rb +0 -119
@@ -1,4 +1,5 @@
1
1
  require 'helper'
2
+ require 'toolshed/server_administration/ssh'
2
3
 
3
4
  class SSHTest < Test::Unit::TestCase
4
5
  def test_setting_ssh_options
@@ -1,11 +1,13 @@
1
1
  require 'helper'
2
+ require 'toolshed/ticket_tracking/ticket_tracking'
3
+ require 'toolshed/ticket_tracking/jira'
2
4
 
3
5
  class JiraTest < Test::Unit::TestCase
4
6
  def self.startup
5
- Toolshed::Client::ticket_tracker_username = 'sample'
6
- Toolshed::Client::ticket_tracker_password = 'sample'
7
- Toolshed::Client::ticket_tracker_owner = 'sample'
8
- Toolshed::Client::default_pull_request_title_format = '[id] - [summary]'
7
+ Toolshed::Client.instance.ticket_tracker_username = 'sample'
8
+ Toolshed::Client.instance.ticket_tracker_password = 'sample'
9
+ Toolshed::Client.instance.ticket_tracker_owner = 'sample'
10
+ Toolshed::Client.instance.default_pull_request_title_format = '[id] - [summary]'
9
11
  end
10
12
 
11
13
  def test_add_note
@@ -120,15 +122,15 @@ class JiraTest < Test::Unit::TestCase
120
122
  '11'
121
123
  )
122
124
 
123
- assert_equal("https://#{Toolshed::Client::ticket_tracker_owner}.atlassian.net/browse/11", @jira.url)
125
+ assert_equal("https://#{Toolshed::Client.instance.ticket_tracker_owner}.atlassian.net/browse/11", @jira.url)
124
126
  end
125
127
 
126
128
  def test_username
127
- assert_equal(Toolshed::TicketTracking::Jira.username, Toolshed::Client::ticket_tracker_username)
129
+ assert_equal(Toolshed::TicketTracking::Jira.username, Toolshed::Client.instance.ticket_tracker_username)
128
130
  end
129
131
 
130
132
  def test_password
131
- assert_equal(Toolshed::TicketTracking::Jira.password, Toolshed::Client::ticket_tracker_password)
133
+ assert_equal(Toolshed::TicketTracking::Jira.password, Toolshed::Client.instance.ticket_tracker_password)
132
134
  end
133
135
 
134
136
  def test_create_instance_raise_project_name
@@ -158,9 +160,9 @@ class JiraTest < Test::Unit::TestCase
158
160
 
159
161
  def jira_init
160
162
  @jira = Toolshed::TicketTracking::Jira.create_instance({
161
- username: Toolshed::Client::ticket_tracker_username,
162
- password: Toolshed::Client::ticket_tracker_password,
163
- owner: Toolshed::Client::ticket_tracker_owner,
163
+ username: Toolshed::Client.instance.ticket_tracker_username,
164
+ password: Toolshed::Client.instance.ticket_tracker_password,
165
+ owner: Toolshed::Client.instance.ticket_tracker_owner,
164
166
  project: 'project',
165
167
  ticket_id: '11',
166
168
  })
@@ -180,9 +182,9 @@ class JiraTest < Test::Unit::TestCase
180
182
 
181
183
  JIRA::Client.expects(:new).
182
184
  with({
183
- username: Toolshed::Client::ticket_tracker_username,
184
- password: Toolshed::Client::ticket_tracker_password,
185
- site: "https://#{Toolshed::Client::ticket_tracker_owner}.atlassian.net",
185
+ username: Toolshed::Client.instance.ticket_tracker_username,
186
+ password: Toolshed::Client.instance.ticket_tracker_password,
187
+ site: "https://#{Toolshed::Client.instance.ticket_tracker_owner}.atlassian.net",
186
188
  context_path: '',
187
189
  auth_type: :basic,
188
190
  use_ssl: true
@@ -233,9 +235,9 @@ class JiraTest < Test::Unit::TestCase
233
235
  def jira_http_mock_attributes
234
236
  {
235
237
  options: {
236
- username: Toolshed::Client::ticket_tracker_username,
237
- password: Toolshed::Client::ticket_tracker_password,
238
- site: "https://#{Toolshed::Client::ticket_tracker_owner}.atlassian.net",
238
+ username: Toolshed::Client.instance.ticket_tracker_username,
239
+ password: Toolshed::Client.instance.ticket_tracker_password,
240
+ site: "https://#{Toolshed::Client.instance.ticket_tracker_owner}.atlassian.net",
239
241
  context_path: "",
240
242
  rest_base_path: "/rest/api/2",
241
243
  ssl_verify_mode: 1,
@@ -1,15 +1,17 @@
1
1
  require 'helper'
2
+ require 'toolshed/time_tracking/time_tracking'
3
+ require 'toolshed/time_tracking/harvest'
2
4
 
3
5
  class HarvestTest < Test::Unit::TestCase
4
6
  def self.startup
5
- Toolshed::Client.time_tracking_tool = 'harvest'
6
- Toolshed::Client.time_tracking_default_project_id = '1234'
7
- Toolshed::Client.time_tracking_username = 'sample_username'
8
- Toolshed::Client.time_tracking_password = 'sample1234'
9
- Toolshed::Client.time_tracking_owner = 'me'
7
+ Toolshed::Client.instance.time_tracking_tool = 'harvest'
8
+ Toolshed::Client.instance.time_tracking_default_project_id = '1234'
9
+ Toolshed::Client.instance.time_tracking_username = 'sample_username'
10
+ Toolshed::Client.instance.time_tracking_password = 'sample1234'
11
+ Toolshed::Client.instance.time_tracking_owner = 'me'
10
12
 
11
13
  ::Harvest.expects(:client).
12
- with(subdomain: Toolshed::Client.time_tracking_owner, username: Toolshed::Client.time_tracking_username, password: Toolshed::Client.time_tracking_password).
14
+ with(subdomain: Toolshed::Client.instance.time_tracking_owner, username: Toolshed::Client.instance.time_tracking_username, password: Toolshed::Client.instance.time_tracking_password).
13
15
  returns('')
14
16
  end
15
17
 
data/toolshed.gemspec CHANGED
@@ -4,33 +4,34 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'toolshed/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "toolshed"
7
+ spec.name = 'toolshed'
8
8
  spec.version = Toolshed::VERSION
9
- spec.authors = ["Jake Waller"]
10
- spec.email = ["wallerjake@gmail.com"]
11
- spec.description = %q{Utility that will automate simple daily tasks developers perform like creating a Github pull request}
12
- spec.summary = %q{Create a Github pull request with minimal work. Will automatically read ticket information from pivotal tracker if you use that.}
13
- spec.homepage = ""
14
- spec.license = "MIT"
9
+ spec.authors = ['Jake Waller']
10
+ spec.email = ['wallerjake@gmail.com']
11
+ spec.description = %q{Utility that will automate simple daily tasks developers perform like creating a Github pull request} # rubocop:disable Metrics/LineLength
12
+ spec.summary = %q{Create a Github pull request with minimal work. Will automatically read ticket information from pivotal tracker if you use that.} # rubocop:disable Metrics/LineLength
13
+ spec.homepage = ''
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
- #spec.executables = ["toolshed"]
17
+ #spec.executables = ['toolshed']
18
18
  spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  spec.test_files = spec.files.grep(%r{^(test)/})
20
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
21
21
 
22
- spec.add_dependency "httparty"
23
- spec.add_dependency "json"
24
- spec.add_dependency "pivotal-tracker"
25
- spec.add_dependency "harvested"
26
- spec.add_dependency "veto"
27
- spec.add_dependency "launchy"
28
- spec.add_dependency "clipboard"
29
- spec.add_dependency "jira-ruby"
30
- spec.add_dependency "net-ssh"
22
+ spec.add_dependency 'httparty', '0.13.5'
23
+ spec.add_dependency 'pivotal-tracker', '0.5.13'
24
+ spec.add_dependency 'harvested', '3.1.1'
25
+ spec.add_dependency 'veto'
26
+ spec.add_dependency 'launchy', '2.4.3'
27
+ spec.add_dependency 'clipboard', '1.0.6'
28
+ spec.add_dependency 'jira-ruby', '0.1.14'
29
+ spec.add_dependency 'net-ssh', '2.9.2'
30
+ spec.add_dependency 'term-ansicolor', '1.3.0'
31
+ spec.add_dependency 'highline', '1.7.2'
31
32
 
32
- spec.add_development_dependency "bundler"
33
- spec.add_development_dependency "rake"
33
+ spec.add_development_dependency 'bundler'
34
+ spec.add_development_dependency 'rake'
34
35
  spec.add_development_dependency 'mocha'
35
36
  spec.add_development_dependency 'faker'
36
37
  spec.add_development_dependency 'test-unit'
@@ -38,4 +39,6 @@ Gem::Specification.new do |spec|
38
39
  spec.add_development_dependency 'ci_reporter'
39
40
  spec.add_development_dependency 'simplecov'
40
41
  spec.add_development_dependency 'codeclimate-test-reporter'
42
+ spec.add_development_dependency 'rubocop'
43
+ spec.add_development_dependency 'awesome_print'
41
44
  end
metadata CHANGED
@@ -1,59 +1,59 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toolshed
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Waller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-23 00:00:00.000000000 Z
11
+ date: 2015-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.13.5
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 0.13.5
27
27
  - !ruby/object:Gem::Dependency
28
- name: json
28
+ name: pivotal-tracker
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.5.13
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 0.5.13
41
41
  - !ruby/object:Gem::Dependency
42
- name: pivotal-tracker
42
+ name: harvested
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 3.1.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 3.1.1
55
55
  - !ruby/object:Gem::Dependency
56
- name: harvested
56
+ name: veto
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,75 +67,89 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: veto
70
+ name: launchy
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 2.4.3
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 2.4.3
83
83
  - !ruby/object:Gem::Dependency
84
- name: launchy
84
+ name: clipboard
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 1.0.6
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 1.0.6
97
97
  - !ruby/object:Gem::Dependency
98
- name: clipboard
98
+ name: jira-ruby
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: 0.1.14
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: 0.1.14
111
111
  - !ruby/object:Gem::Dependency
112
- name: jira-ruby
112
+ name: net-ssh
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 2.9.2
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - '='
123
123
  - !ruby/object:Gem::Version
124
- version: '0'
124
+ version: 2.9.2
125
125
  - !ruby/object:Gem::Dependency
126
- name: net-ssh
126
+ name: term-ansicolor
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: '0'
131
+ version: 1.3.0
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: '0'
138
+ version: 1.3.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: highline
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '='
144
+ - !ruby/object:Gem::Version
145
+ version: 1.7.2
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '='
151
+ - !ruby/object:Gem::Version
152
+ version: 1.7.2
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: bundler
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -262,24 +276,52 @@ dependencies:
262
276
  - - ">="
263
277
  - !ruby/object:Gem::Version
264
278
  version: '0'
279
+ - !ruby/object:Gem::Dependency
280
+ name: rubocop
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ type: :development
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: '0'
293
+ - !ruby/object:Gem::Dependency
294
+ name: awesome_print
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ type: :development
301
+ prerelease: false
302
+ version_requirements: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - ">="
305
+ - !ruby/object:Gem::Version
306
+ version: '0'
265
307
  description: Utility that will automate simple daily tasks developers perform like
266
308
  creating a Github pull request
267
309
  email:
268
310
  - wallerjake@gmail.com
269
311
  executables:
270
312
  - toolshed
271
- - toolshed.rb
272
313
  extensions: []
273
314
  extra_rdoc_files: []
274
315
  files:
275
316
  - ".gitignore"
317
+ - ".rubocop.yml"
318
+ - ".toolshedrc.sample"
276
319
  - ".travis.yml"
277
320
  - Gemfile
278
321
  - LICENSE.txt
279
322
  - README.md
280
323
  - Rakefile
281
324
  - bin/toolshed
282
- - bin/toolshed.rb
283
325
  - lib/toolshed.rb
284
326
  - lib/toolshed/base.rb
285
327
  - lib/toolshed/cli.rb
@@ -294,13 +336,18 @@ files:
294
336
  - lib/toolshed/commands/get_daily_time_update.rb
295
337
  - lib/toolshed/commands/list_branches.rb
296
338
  - lib/toolshed/commands/push_branch.rb
339
+ - lib/toolshed/commands/rename_branch.rb
297
340
  - lib/toolshed/commands/ssh.rb
298
341
  - lib/toolshed/commands/ticket_information.rb
299
342
  - lib/toolshed/commands/update_pivotal_tracker_story_status.rb
300
343
  - lib/toolshed/commands/update_ticket_status.rb
344
+ - lib/toolshed/entry_point.rb
301
345
  - lib/toolshed/error.rb
302
- - lib/toolshed/git/git.rb
346
+ - lib/toolshed/git.rb
347
+ - lib/toolshed/git/branch.rb
303
348
  - lib/toolshed/git/github.rb
349
+ - lib/toolshed/git/validator.rb
350
+ - lib/toolshed/logger.rb
304
351
  - lib/toolshed/password.rb
305
352
  - lib/toolshed/server_administration/ssh.rb
306
353
  - lib/toolshed/ticket_tracking/jira.rb
@@ -317,6 +364,7 @@ files:
317
364
  - test/commands/delete_branch_test.rb
318
365
  - test/commands/get_daily_time_update_test.rb
319
366
  - test/commands/push_branch_test.rb
367
+ - test/commands/rename_branch_test.rb
320
368
  - test/config.rb
321
369
  - test/git/git_helper.rb
322
370
  - test/git/git_test.rb
@@ -347,7 +395,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
347
395
  version: '0'
348
396
  requirements: []
349
397
  rubyforge_project:
350
- rubygems_version: 2.2.2
398
+ rubygems_version: 2.4.5
351
399
  signing_key:
352
400
  specification_version: 4
353
401
  summary: Create a Github pull request with minimal work. Will automatically read ticket
@@ -361,6 +409,7 @@ test_files:
361
409
  - test/commands/delete_branch_test.rb
362
410
  - test/commands/get_daily_time_update_test.rb
363
411
  - test/commands/push_branch_test.rb
412
+ - test/commands/rename_branch_test.rb
364
413
  - test/config.rb
365
414
  - test/git/git_helper.rb
366
415
  - test/git/git_test.rb