gem_updater 0.3.2 → 0.4.0

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: ef7d798b61ae1f56ffbf044f95b93dc174b01a79
4
- data.tar.gz: 1c932cf623e67b5e0d5d7e228540d43c15d2f5c5
3
+ metadata.gz: fee227f190228ac253e48a0ae55f3149c811b04b
4
+ data.tar.gz: d5e4a27a8c8173afad0bcdff99d653330c849e90
5
5
  SHA512:
6
- metadata.gz: a0886abdf06b101812aa9b939fcd34d0cced6c90cdc3f2b725bd71a37d180cec979bf5d761e1009730bd67c77f3016130c3469868e2a3b3c257717353d232c82
7
- data.tar.gz: 46afa4be3f6234ac1538761b5674a3dc24dbd86aec3d4e89f5757beb896e997a0cda79e7ab72c93b62423a2721dc6e552b4262ac310bab2f4dba271fd1f34a80
6
+ metadata.gz: c8caa264e1614513e77fce435e9e606f950f255c8bce3865103c751ebcc3dd544b2362c4601fa6751de80469395fbe08965eb53589f6ca1e78cab1e1440c1da4
7
+ data.tar.gz: 6cd3bb667a5bf9123d52695ac1c1be946f6a45c63e6288deabd214f9adb51ee1e483ac04656846271f804a5bb729b026d421ae27e2185070325f02eb0ba5d0ee
data/bin/gem_update CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ require 'optparse'
2
3
 
3
4
  # Exit cleanly from an early interrupt
4
5
  Signal.trap("INT") { exit 1 }
@@ -6,11 +7,20 @@ Signal.trap("INT") { exit 1 }
6
7
  $:.unshift File.expand_path( '../../lib', __FILE__ )
7
8
  require 'gem_updater'
8
9
 
10
+ Bundler.ui = Bundler::UI::Shell.new
11
+
12
+ options = {}
13
+ OptionParser.new do |opts|
14
+ opts.on( "-c", "--commit", "Auto commit" ) do |v|
15
+ options[ :commit ] = v
16
+ end
17
+ end.parse!
18
+
9
19
  gems = GemUpdater::Updater.new
10
- gems.update!
20
+ gems.update!( ARGV )
11
21
 
12
22
  if gems.gemfile.changes.any?
13
- if ARGV.include? '--commit'
23
+ if options[ :commit ]
14
24
  require 'tempfile'
15
25
  file = Tempfile.new( 'gem_updater' )
16
26
  file.write "UPDATE gems\n\n"
@@ -22,10 +32,10 @@ if gems.gemfile.changes.any?
22
32
  system %(git add #{gemfile} #{gemfile}.lock && git commit -t #{file.path} --allow-empty-message)
23
33
  file.unlink
24
34
  else
25
- puts "\nHere are your changes:"
26
- puts '------------------------'
35
+ Bundler.ui.confirm "\nHere are your changes:"
36
+ Bundler.ui.confirm '------------------------'
27
37
  gems.output_diff
28
38
  end
29
39
  else
30
- puts "\nCongratulations, your Gemfile was already up-to-date!"
40
+ Bundler.ui.confirm "\nCongratulations, your Gemfile was already up-to-date!"
31
41
  end
data/lib/gem_updater.rb CHANGED
@@ -17,23 +17,18 @@ module GemUpdater
17
17
  # This will:
18
18
  # 1. update gemfile
19
19
  # 2. find changelogs for updated gems
20
- def update!
21
- gemfile.update!
20
+ #
21
+ # @param gems [Array] list of gems to update
22
+ def update!( gems )
23
+ gemfile.update!( gems )
22
24
  gemfile.compute_changes
23
25
 
24
-
25
- gemfile.changes.each do |gem_name, details|
26
- if source_uri = find_source( gem_name, details[ :source ] )
27
- source_page = GemUpdater::SourcePageParser.new( url: source_uri, version: details[ :versions ][ :new ] )
28
-
29
- gemfile.changes[ gem_name ][ :changelog ] = source_page.changelog if source_page.changelog
30
- end
31
- end
26
+ fill_changelogs
32
27
  end
33
28
 
34
29
  # Print formatted diff
35
30
  def output_diff
36
- puts format_diff.join( "\n" )
31
+ Bundler.ui.info format_diff.join
37
32
  end
38
33
 
39
34
  # Format the diff to get human readable information
@@ -46,6 +41,24 @@ module GemUpdater
46
41
 
47
42
  private
48
43
 
44
+ # For each gem, retrieve its changelog
45
+ def fill_changelogs
46
+ threads = []
47
+
48
+ gemfile.changes.each do |gem_name, details|
49
+ threads << Thread.new do
50
+ if source_uri = find_source( gem_name, details[ :source ] )
51
+ source_page = GemUpdater::SourcePageParser.new( url: source_uri, version: details[ :versions ][ :new ] )
52
+
53
+ gemfile.changes[ gem_name ][ :changelog ] = source_page.changelog if source_page.changelog
54
+ end
55
+ end
56
+ end
57
+
58
+ threads.each( &:join )
59
+ end
60
+
61
+
49
62
  # Find where is hosted the source of a gem
50
63
  #
51
64
  # @param gem [String] the name of the gem
@@ -12,9 +12,9 @@ module GemUpdater
12
12
  end
13
13
 
14
14
  # Run `bundle update` to update gems.
15
- def update!
16
- puts "Updating gems..."
17
- Bundler::CLI.start( [ 'update' ] )
15
+ def update!( gems )
16
+ Bundler.ui.warn "Updating gems..."
17
+ Bundler::CLI.start( [ 'update' ] + gems )
18
18
  end
19
19
 
20
20
  # Compute the diffs between two `Gemfile.lock`.
@@ -55,7 +55,7 @@ module GemUpdater
55
55
  when 'rails-assets.org'
56
56
  uri_from_railsassets
57
57
  else
58
- puts "Source #{remote} is not supported, feel free to open a PR or an issue on https://github.com/MaximeD/gem_updater"
58
+ Bundler.ui.error "Source #{remote} is not supported, feel free to open a PR or an issue on https://github.com/MaximeD/gem_updater"
59
59
  end
60
60
  end
61
61
 
@@ -19,15 +19,15 @@ module GemUpdater
19
19
  # @return [String, nil] URL of changelog
20
20
  def changelog
21
21
  @changelog ||= begin
22
- puts "Looking for a changelog in #{@uri}"
22
+ Bundler.ui.warn "Looking for a changelog in #{@uri}"
23
23
  doc = Nokogiri::HTML( open( @uri ) )
24
24
 
25
25
  find_changelog( doc )
26
26
 
27
27
  rescue OpenURI::HTTPError # Uri points to nothing
28
- puts "Cannot find #{@uri}"
28
+ Bundler.ui.error "Cannot find #{@uri}"
29
29
  rescue Errno::ETIMEDOUT # timeout
30
- puts "#{@uri} is down"
30
+ Bundler.ui.error "#{@uri} is down"
31
31
  end
32
32
  end
33
33
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_updater
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maxime Demolin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-23 00:00:00.000000000 Z
11
+ date: 2015-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler