ggem 1.8.0 → 1.8.1

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.
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"