bummr 0.1.7 → 0.1.8

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: d8473b4f3a06e36c229bf26a1e3616772f7d3990
4
- data.tar.gz: ab6ce39aeecddd616183755cf4a434639b52a76d
3
+ metadata.gz: d64478d84437a8076bae2b39e12563ba56db1490
4
+ data.tar.gz: bd338fc27a9e6ca323262e59d4eee1ae25d9a0bf
5
5
  SHA512:
6
- metadata.gz: c41d64f81b11a1c8a7874925cde87c0a745ea20a2a0102bc0472abeef74424704a67f6ebd37a38b63fc9f5ed743d881a4ba44f9b28ce413efbd5032673e13e23
7
- data.tar.gz: de76a97147722a12995845c759ddb0f4f80272303e38c09ae4536b8d59b7d15e342b6d4ae20b608c5435435c4690101f7498198a16ed72fa1a418a4b2d59f0ba
6
+ metadata.gz: 764ff33ffa322006846138d751383de83451830fbc25e622aaaa7e7186e0cbd3bed34039c846cdf9e022eea0e14fe061f8dc723513821453e8b96d8ea4568989
7
+ data.tar.gz: 4d93f0de632b3c4111aaeca80201ff691c696fa32d42c79062a114953389367fa2be520576f38fb1c1e2a7d0fa5c9eb479733eada7c52dbdd721d441f52be419
data/README.md CHANGED
@@ -12,8 +12,8 @@ Gems should be updated in [separate commits](http://ilikestuffblog.com/2012/07/0
12
12
  The bummr gem allows you to automatically update all gems which pass your
13
13
  build in separate commits, and logs the name and sha of each gem that fails.
14
14
 
15
- Bummr assumes you have good test coverage and follow a [pull-request workflow] (https://help.github.com/articles/using-pull-requests/) with `master` as your
16
- default branch.
15
+ Bummr assumes you have good test coverage and follow a [pull-request workflow]
16
+ with `master` as your default branch.
17
17
 
18
18
  Please note that this gem is *alpha* stage and may have bugs.
19
19
 
@@ -27,13 +27,14 @@ By default, bummr will use `bundle exec rake` to run your build.
27
27
 
28
28
  To customize your build command, `export BUMMR_TEST="./bummr-build.sh"`
29
29
 
30
- If you prefer, you can [run the build more than once]
31
- (https://gist.github.com/lpender/f6b55e7f3649db3b6df5), to protect against
30
+ If you prefer, you can [run the build more than once], to protect against
32
31
  brittle tests and false positives.
33
32
 
34
33
  By default, bummr will assume your base branch is named `master`. If you would
35
34
  like to designate a different base branch, you can set the `BASE_BRANCH`
36
- environment variable: `export BASE_BRANCH='develop'
35
+ environment variable: `export BASE_BRANCH='develop'`
36
+
37
+ [run the build more than once]: https://gist.github.com/lpender/f6b55e7f3649db3b6df5
37
38
 
38
39
  ## Usage:
39
40
 
@@ -60,6 +61,8 @@ instructions in the Installation section of this README.
60
61
  - Finds all your outdated gems
61
62
  - Updates them each individually, using `bundle update --source #{gemname}`
62
63
  - Commits each gem update separately, with a commit message like:
64
+ - Options:
65
+ - `--all` to include indirect dependencies (`bummr` defaults to direct dependencies only)
63
66
 
64
67
  `Update gemname from 0.0.1 to 0.0.2`
65
68
 
@@ -81,8 +84,7 @@ instructions in the Installation section of this README.
81
84
  ## Notes
82
85
 
83
86
  - Bummr assumes you have good test coverage and follow a [pull-request workflow]
84
- (https://help.github.com/articles/using-pull-requests/) with `master` as your
85
- default branch.
87
+ with `master` as your default branch.
86
88
  - Once the build passes, you can push your branch and create a pull-request!
87
89
  - You may wish to `tail -f log/bummr.log` in a separate terminal window so you
88
90
  can see which commits are being removed.
@@ -114,3 +116,5 @@ issue](https://github.com/bjoernalbers/aruba-doubles/issues/5)
114
116
 
115
117
  Thanks to Ryan Sonnek for the [Bundler
116
118
  Updater](https://github.com/wireframe/bundler-updater) gem.
119
+
120
+ [pull-request workflow]: https://help.github.com/articles/using-pull-requests
data/lib/bummr/cli.rb CHANGED
@@ -11,6 +11,7 @@ module Bummr
11
11
  end
12
12
 
13
13
  desc "update", "Update outdated gems, run tests, bisect if tests fail"
14
+ method_option :all, type: :boolean, default: false
14
15
  def update
15
16
  ask_questions
16
17
 
@@ -19,7 +20,7 @@ module Bummr
19
20
  log("Bummr update initiated #{Time.now}")
20
21
  system("bundle")
21
22
 
22
- outdated_gems = Bummr::Outdated.instance.outdated_gems
23
+ outdated_gems = Bummr::Outdated.instance.outdated_gems(all_gems: options[:all])
23
24
 
24
25
  if outdated_gems.empty?
25
26
  puts "No outdated gems to update".color(:green)
@@ -5,23 +5,24 @@ module Bummr
5
5
  class Outdated
6
6
  include Singleton
7
7
 
8
- def outdated_gems
9
- @outdated_gems ||= begin
10
- results = []
11
-
12
- Open3.popen2("bundle outdated --strict") do |_std_in, std_out|
13
- while line = std_out.gets
14
- puts line
15
- gem = parse_gem_from(line)
16
-
17
- if gem && gemfile_contains(gem[:name])
18
- results.push gem
19
- end
8
+ def outdated_gems(all_gems: false)
9
+ results = []
10
+
11
+ options = []
12
+ options << "--strict" unless all_gems
13
+
14
+ Open3.popen2("bundle outdated", *options) do |_std_in, std_out|
15
+ while line = std_out.gets
16
+ puts line
17
+ gem = parse_gem_from(line)
18
+
19
+ if gem && (all_gems || gemfile_contains(gem[:name]))
20
+ results.push gem
20
21
  end
21
22
  end
22
-
23
- results
24
23
  end
24
+
25
+ results
25
26
  end
26
27
 
27
28
  def parse_gem_from(line)
data/lib/bummr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Bummr
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  end
data/spec/lib/cli_spec.rb CHANGED
@@ -60,6 +60,30 @@ describe Bummr::CLI do
60
60
  cli.update
61
61
  end
62
62
  end
63
+
64
+ describe "all option" do
65
+ it "requests all outdated gems be listed" do
66
+ options[:all] = true
67
+
68
+ expect_any_instance_of(Bummr::Outdated)
69
+ .to receive(:outdated_gems).with({ all_gems: true })
70
+ .and_return outdated_gems
71
+
72
+ updater = double
73
+ allow(updater).to receive(:update_gems)
74
+
75
+ expect(cli).to receive(:ask_questions)
76
+ expect(cli).to receive(:yes?).and_return(true)
77
+ expect(cli).to receive(:check)
78
+ expect(cli).to receive(:log)
79
+ expect(cli).to receive(:system).with("bundle")
80
+ expect(Bummr::Updater).to receive(:new).with(outdated_gems).and_return updater
81
+ expect(cli).to receive(:system).with("git rebase -i #{BASE_BRANCH}")
82
+ expect(cli).to receive(:test)
83
+
84
+ cli.update
85
+ end
86
+ end
63
87
  end
64
88
  end
65
89
 
@@ -7,6 +7,7 @@ describe Bummr::Outdated do
7
7
  output += " * devise (newest 4.1.1, installed 3.5.2) in group \"default\"\n"
8
8
  output += " * rake (newest 11.1.2, installed 10.4.2)\n"
9
9
  output += " * rails (newest 4.2.6, installed 4.2.5.1, requested ~> 4.2.0) in group \"default\"\n"
10
+ output += " * indirect_dep (newest 1.0.0, installed 0.0.1)\n"
10
11
  StringIO.new(output)
11
12
  }
12
13
 
@@ -38,6 +39,30 @@ describe Bummr::Outdated do
38
39
  expect(result[2][:newest]).to eq('4.2.6')
39
40
  expect(result[2][:installed]).to eq('4.2.5.1')
40
41
  end
42
+
43
+ describe "all gems option" do
44
+ it "lists all outdated dependencies by omitting the strict option" do
45
+ allow(Open3).to receive(:popen2).with("bundle outdated").and_yield(nil, stdoutput)
46
+
47
+ allow(Bummr::Outdated.instance).to receive(:gemfile).and_return gemfile
48
+
49
+ results = Bummr::Outdated.instance.outdated_gems(all_gems: true)
50
+ gem_names = results.map { |result| result[:name] }
51
+
52
+ expect(gem_names).to include "indirect_dep"
53
+ end
54
+
55
+ it "defaults to false" do
56
+ expect(Open3).to receive(:popen2).with("bundle outdated", "--strict").and_yield(nil, stdoutput)
57
+
58
+ allow(Bummr::Outdated.instance).to receive(:gemfile).and_return gemfile
59
+
60
+ results = Bummr::Outdated.instance.outdated_gems
61
+ gem_names = results.map { |result| result[:name] }
62
+
63
+ expect(gem_names).to_not include "indirect_dep"
64
+ end
65
+ end
41
66
  end
42
67
 
43
68
  describe "#parse_gem_from" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bummr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Pender
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-03 00:00:00.000000000 Z
11
+ date: 2017-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor