ggem 1.8.0 → 1.8.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9bb7a69fa7315e7512e780ebe935557f2e4b2664
4
- data.tar.gz: 8aadfede4196531dc4af409a5856805818065ba3
3
+ metadata.gz: 78af14258ae315c8ee616b840770779d1084d591
4
+ data.tar.gz: 227aff8e65f1aca57f6a9b18e30fd67da6c967f2
5
5
  SHA512:
6
- metadata.gz: 7f6fe5a9353e8dcc1fb53ab4f3d6115c0d0d53d64f5bd79e4fe47fc85368ba1256916a91d6877ff2f16e62aaa1d4b14038ab98169f4662c3995bcec8ef05421b
7
- data.tar.gz: f9dd50efd68643021c9a6ea8780c9f3547c5355905917f54ac66c472bec450627fdb559c3ecc5ad75ad6d1d04604d5913eb5a12ae0a074f2ab6de2a3f1b8a7d6
6
+ metadata.gz: 9652f4d234a556ce6259f83aad0208b1b6ab175ef07b1a426408873ec01d669c55463daf7e91e8d50d840ad0fcc552eafe5934489a2db1320e3af518975d6ff9
7
+ data.tar.gz: adbb62ae9184ec3ddf508b7a80a6633154de627c41ed60b212567ab026d28642ed6a8827a9ecff82995466e6fc32fb6077711b7a0fec070df65ac168d1fd2d24
data/Gemfile CHANGED
@@ -2,5 +2,4 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'rake', "~> 10.4.0"
6
- gem 'pry', "~> 0.9.0"
5
+ gem 'pry', "~> 0.9.0"
data/ggem.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |gem|
8
8
  gem.version = GGem::VERSION
9
9
  gem.authors = ["Kelly Redding", "Collin Redding"]
10
10
  gem.email = ["kelly@kellyredding.com", "collin.redding@me.com"]
11
- gem.description = %q{"Juh Gem", baby! (a gem utility CLI)}
12
11
  gem.summary = %q{"Juh Gem", baby! (a gem utility CLI)}
12
+ gem.description = %q{"Juh Gem", baby! (a gem utility CLI)}
13
13
  gem.homepage = "http://github.com/redding/ggem"
14
14
  gem.license = 'MIT'
15
15
 
@@ -18,7 +18,7 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
- gem.add_development_dependency("assert", ["~> 2.15.0"])
21
+ gem.add_development_dependency("assert", ["~> 2.16.1"])
22
22
 
23
23
  gem.add_dependency("much-plugin", ["~> 0.1.0"])
24
24
  gem.add_dependency("scmd", ["~> 3.0.1"])
@@ -42,8 +42,8 @@ class GGem::CLI
42
42
 
43
43
  module InstanceMethods
44
44
 
45
- def initialize
46
- @clirb = CLIRB.new
45
+ def initialize(&clirb_build)
46
+ @clirb = CLIRB.new(&clirb_build)
47
47
  end
48
48
 
49
49
  def clirb; @clirb; end
@@ -275,9 +275,32 @@ class GGem::CLI
275
275
 
276
276
  end
277
277
 
278
+ module ForceTagOptionCommand
279
+ include MuchPlugin
280
+
281
+ plugin_included do
282
+ include ValidCommand
283
+ include InstanceMethods
284
+ end
285
+
286
+ module InstanceMethods
287
+
288
+ def initialize
289
+ super do
290
+ option 'force-tag', 'force tagging even with uncommitted files', {
291
+ :abbrev => 'f'
292
+ }
293
+ end
294
+ end
295
+
296
+ end
297
+
298
+ end
299
+
278
300
  class TagCommand
279
301
  include GitRepoCommand
280
302
  include GemspecCommand
303
+ include ForceTagOptionCommand
281
304
 
282
305
  def run(argv, *args)
283
306
  super
@@ -287,7 +310,11 @@ class GGem::CLI
287
310
  cmd{ @repo.run_validate_committed_cmd }
288
311
  rescue GGem::GitRepo::CmdError => err
289
312
  @stderr.puts "There are files that need to be committed first."
290
- raise CommandExitError
313
+ if self.clirb.opts['force-tag']
314
+ @stderr.puts "Forcing tag anyway..."
315
+ else
316
+ raise CommandExitError
317
+ end
291
318
  end
292
319
 
293
320
  cmd{ @repo.run_add_version_tag_cmd(@spec.version, @spec.version_tag) }
@@ -322,6 +349,7 @@ class GGem::CLI
322
349
 
323
350
  class ReleaseCommand
324
351
  include GemspecCommand
352
+ include ForceTagOptionCommand
325
353
 
326
354
  def initialize(*args)
327
355
  super
@@ -18,7 +18,7 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
- gem.add_development_dependency("assert", ["~> 2.15.0"])
21
+ gem.add_development_dependency("assert", ["~> 2.16.1"])
22
22
  # TODO: gem.add_dependency("gem-name", ["~> 0.0.0"])
23
23
 
24
24
  end
@@ -9,4 +9,13 @@ require 'pry'
9
9
 
10
10
  require 'test/support/factory'
11
11
 
12
+ # 1.8.7 backfills
13
+
14
+ # Array#sample
15
+ if !(a = Array.new).respond_to?(:sample) && a.respond_to?(:choice)
16
+ class Array
17
+ alias_method :sample, :choice
18
+ end
19
+ end
20
+
12
21
  # TODO: put test helpers here...
data/lib/ggem/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module GGem
2
- VERSION = "1.8.0"
2
+ VERSION = "1.8.1"
3
3
  end
data/test/helper.rb CHANGED
@@ -12,3 +12,12 @@ TEST_SUPPORT_PATH = ROOT_PATH.join('test/support')
12
12
  require 'pry'
13
13
 
14
14
  require 'test/support/factory'
15
+
16
+ # 1.8.7 backfills
17
+
18
+ # Array#sample
19
+ if !(a = Array.new).respond_to?(:sample) && a.respond_to?(:choice)
20
+ class Array
21
+ alias_method :sample, :choice
22
+ end
23
+ end
@@ -32,7 +32,7 @@ module GGem
32
32
  end
33
33
 
34
34
  def assert_exp_cmds_error(cmd_error_class, &run_cmd_block)
35
- err_cmd_str = @exp_cmds_run.choice
35
+ err_cmd_str = @exp_cmds_run.sample
36
36
  Scmd.add_command(err_cmd_str) do |cmd|
37
37
  cmd.exitstatus = 1
38
38
  cmd.stderr = Factory.string
@@ -231,7 +231,7 @@ class GGem::CLI
231
231
  end
232
232
 
233
233
  should "raise a help exit if its name is empty" do
234
- cmd = @command_class.new([nil, ''].choice)
234
+ cmd = @command_class.new([nil, ''].sample)
235
235
  argv = [Factory.string, Factory.string]
236
236
  assert_raises(CLIRB::HelpExit){ cmd.new.run(argv) }
237
237
  end
@@ -277,6 +277,14 @@ class GGem::CLI
277
277
  assert_equal argv, subject.clirb.args
278
278
  end
279
279
 
280
+ should "take custom CLIRB build procs" do
281
+ cmd = @command_class.new do
282
+ option 'test', 'testing', :abbrev => 't'
283
+ end
284
+ cmd.run(['-t'], @stdout, @stderr)
285
+ assert_true cmd.clirb.opts['test']
286
+ end
287
+
280
288
  should "default its summary" do
281
289
  assert_equal '', subject.summary
282
290
  end
@@ -485,7 +493,7 @@ class GGem::CLI
485
493
  end
486
494
 
487
495
  should "call the spec's run build cmd when run" do
488
- ENV['DEBUG'] = [nil, '1'].choice
496
+ ENV['DEBUG'] = [nil, '1'].sample
489
497
  subject.run([], @stdout, @stderr)
490
498
 
491
499
  assert_true @spec_spy.run_build_cmd_called
@@ -542,7 +550,7 @@ class GGem::CLI
542
550
  end
543
551
 
544
552
  should "run the build command and call the spec's run install cmds when run" do
545
- ENV['DEBUG'] = [nil, '1'].choice
553
+ ENV['DEBUG'] = [nil, '1'].sample
546
554
  subject.run(@argv, @stdout, @stderr)
547
555
 
548
556
  assert_true @build_spy.run_called
@@ -601,7 +609,7 @@ class GGem::CLI
601
609
  end
602
610
 
603
611
  should "run the build command and call the spec's run push cmds when run" do
604
- ENV['DEBUG'] = [nil, '1'].choice
612
+ ENV['DEBUG'] = [nil, '1'].sample
605
613
  subject.run(@argv, @stdout, @stderr)
606
614
 
607
615
  assert_true @build_spy.run_called
@@ -626,6 +634,24 @@ class GGem::CLI
626
634
 
627
635
  end
628
636
 
637
+ class ForceTagOptionCommandTests < IOCommandTests
638
+ desc "ForceTagOptionCommand"
639
+ setup do
640
+ @command_class = Class.new{ include ForceTagOptionCommand }
641
+ @cmd = @command_class.new
642
+ end
643
+
644
+ should "be a valid command" do
645
+ assert_kind_of ValidCommand, subject
646
+ end
647
+
648
+ should "add a force-tag CLIRB option" do
649
+ subject.run(['-f'], @stdout, @stderr)
650
+ assert_true subject.clirb.opts['force-tag']
651
+ end
652
+
653
+ end
654
+
629
655
  class TagCommandTests < IOCommandTests
630
656
  include GitRepoSpyTests
631
657
  include GemspecSpyTests
@@ -636,8 +662,10 @@ class GGem::CLI
636
662
  @cmd = @command_class.new
637
663
  end
638
664
 
639
- should "be a gemspec command" do
665
+ should "be a git repo, gemspec, force tag option command" do
666
+ assert_kind_of GitRepoCommand, subject
640
667
  assert_kind_of GemspecCommand, subject
668
+ assert_kind_of ForceTagOptionCommand, subject
641
669
  end
642
670
 
643
671
  should "know its summary" do
@@ -654,7 +682,7 @@ class GGem::CLI
654
682
  end
655
683
 
656
684
  should "call the repo's run build/push cmds when run" do
657
- ENV['DEBUG'] = [nil, '1'].choice
685
+ ENV['DEBUG'] = [nil, '1'].sample
658
686
  subject.run([], @stdout, @stderr)
659
687
 
660
688
  assert_true @repo_spy.run_validate_clean_cmd_called
@@ -683,7 +711,7 @@ class GGem::CLI
683
711
 
684
712
  should "handle validation cmd errors when run" do
685
713
  err_msg = Factory.string
686
- err_on = [:run_validate_clean_cmd, :run_validate_committed_cmd].choice
714
+ err_on = [:run_validate_clean_cmd, :run_validate_committed_cmd].sample
687
715
  Assert.stub(@repo_spy, err_on){ raise GGem::GitRepo::CmdError, err_msg }
688
716
 
689
717
  assert_raises(CommandExitError){ subject.run([], @stdout, @stderr) }
@@ -691,9 +719,20 @@ class GGem::CLI
691
719
  assert_equal exp, @stderr.read
692
720
  end
693
721
 
722
+ should "ignore validation cmd errors when run with the force-tag option" do
723
+ err_msg = Factory.string
724
+ err_on = [:run_validate_clean_cmd, :run_validate_committed_cmd].sample
725
+ Assert.stub(@repo_spy, err_on){ raise GGem::GitRepo::CmdError, err_msg }
726
+
727
+ subject.run(['-f'], @stdout, @stderr)
728
+ exp = "There are files that need to be committed first.\n" \
729
+ "Forcing tag anyway...\n"
730
+ assert_equal exp, @stderr.read
731
+ end
732
+
694
733
  should "handle non-validation cmd errors when run" do
695
734
  err_msg = Factory.string
696
- err_on = [:run_add_version_tag_cmd, :run_push_cmd].choice
735
+ err_on = [:run_add_version_tag_cmd, :run_push_cmd].sample
697
736
  Assert.stub(@repo_spy, err_on){ raise GGem::GitRepo::CmdError, err_msg }
698
737
 
699
738
  assert_raises(CommandExitError){ subject.run([], @stdout, @stderr) }
@@ -738,8 +777,9 @@ class GGem::CLI
738
777
  @cmd = @command_class.new
739
778
  end
740
779
 
741
- should "be a gemspec command" do
780
+ should "be a gemspec, force tag option command" do
742
781
  assert_kind_of GemspecCommand, subject
782
+ assert_kind_of ForceTagOptionCommand, subject
743
783
  end
744
784
 
745
785
  should "know its summary" do
@@ -802,14 +842,14 @@ class GGem::CLI
802
842
  exp_strs << "add1 # #{subject['add1'].summary}"
803
843
 
804
844
  @cmd_spy = CommandSpy.new
805
- Assert.stub(@cmd_spy, :summary){ [nil, ''].choice }
845
+ Assert.stub(@cmd_spy, :summary){ [nil, ''].sample }
806
846
  Assert.stub(CommandSpy, :new){ @cmd_spy }
807
847
 
808
848
  subject.add(CommandSpy, 'add2', 'add')
809
849
  exp_strs << "add2 (add) "
810
850
 
811
851
  subject.add(CommandSpy, 'add3')
812
- Assert.stub(subject['add3'], :summary){ [nil, ''].choice }
852
+ Assert.stub(subject['add3'], :summary){ [nil, ''].sample }
813
853
  exp_strs << "add3 "
814
854
 
815
855
  assert_equal exp_strs.join("\n"), subject.to_s
@@ -29,7 +29,7 @@ class GGem::Gem
29
29
 
30
30
  should "complain if no name is provided" do
31
31
  assert_raises(NoNameError) do
32
- @gem_class.new(TMP_PATH, [nil, ''].choice)
32
+ @gem_class.new(TMP_PATH, [nil, ''].sample)
33
33
  end
34
34
  end
35
35
 
@@ -71,7 +71,7 @@ class GGem::Gemspec
71
71
  # prefer the env push hosts over configured and default hosts
72
72
  prev_env_push_host = ENV['GGEM_PUSH_HOST']
73
73
  ENV['GGEM_PUSH_HOST'] = Factory.string
74
- spec = @gemspec_class.new(TEST_SUPPORT_PATH.join(['gem1', 'gem2'].choice))
74
+ spec = @gemspec_class.new(TEST_SUPPORT_PATH.join(['gem1', 'gem2'].sample))
75
75
  assert_equal ENV['GGEM_PUSH_HOST'], spec.push_host
76
76
  ENV['GGEM_PUSH_HOST'] = prev_env_push_host
77
77
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ggem
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kelly Redding
@@ -10,38 +10,38 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2016-01-04 00:00:00 Z
13
+ date: 2016-06-01 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- version_requirements: &id001 !ruby/object:Gem::Requirement
16
+ prerelease: false
17
+ requirement: &id001 !ruby/object:Gem::Requirement
17
18
  requirements:
18
19
  - - ~>
19
20
  - !ruby/object:Gem::Version
20
- version: 2.15.0
21
+ version: 2.16.1
21
22
  type: :development
22
- requirement: *id001
23
23
  name: assert
24
- prerelease: false
24
+ version_requirements: *id001
25
25
  - !ruby/object:Gem::Dependency
26
- version_requirements: &id002 !ruby/object:Gem::Requirement
26
+ prerelease: false
27
+ requirement: &id002 !ruby/object:Gem::Requirement
27
28
  requirements:
28
29
  - - ~>
29
30
  - !ruby/object:Gem::Version
30
31
  version: 0.1.0
31
32
  type: :runtime
32
- requirement: *id002
33
33
  name: much-plugin
34
- prerelease: false
34
+ version_requirements: *id002
35
35
  - !ruby/object:Gem::Dependency
36
- version_requirements: &id003 !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id003 !ruby/object:Gem::Requirement
37
38
  requirements:
38
39
  - - ~>
39
40
  - !ruby/object:Gem::Version
40
41
  version: 3.0.1
41
42
  type: :runtime
42
- requirement: *id003
43
43
  name: scmd
44
- prerelease: false
44
+ version_requirements: *id003
45
45
  description: "\"Juh Gem\", baby! (a gem utility CLI)"
46
46
  email:
47
47
  - kelly@kellyredding.com
@@ -57,7 +57,6 @@ files:
57
57
  - Gemfile
58
58
  - LICENSE
59
59
  - README.md
60
- - Rakefile
61
60
  - bin/ggem
62
61
  - ggem.gemspec
63
62
  - lib/ggem.rb
@@ -111,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
110
  requirements: []
112
111
 
113
112
  rubyforge_project:
114
- rubygems_version: 2.5.1
113
+ rubygems_version: 2.6.4
115
114
  signing_key:
116
115
  specification_version: 4
117
116
  summary: "\"Juh Gem\", baby! (a gem utility CLI)"
data/Rakefile DELETED
@@ -1 +0,0 @@
1
- require "bundler/gem_tasks"