gem_check_updates 0.3.0 → 0.3.2
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 +4 -4
- data/Gemfile.lock +2 -2
- data/lib/gem_check_updates/gem.rb +18 -22
- data/lib/gem_check_updates/gem_version.rb +39 -0
- data/lib/gem_check_updates/gemfile.rb +13 -6
- data/lib/gem_check_updates/runner.rb +9 -10
- data/lib/gem_check_updates/version.rb +1 -1
- data/lib/gem_check_updates.rb +1 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9b7dc3e55d98f1c024b2a1534bfdd13927a52d06027dacce23f22c987941f7f
|
4
|
+
data.tar.gz: 30d9ae7118f8eda037aa8a515bb022ed89134c11b526003004bb47da955ad7de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d12db39ebe1710a825e147f2ea663b63bd45128ac3da0cecc9750c7c7bab6a83d386264f89519bdf15276d361a1a7dfc1ff42bb874b4746edec8589dbe8e3bdb
|
7
|
+
data.tar.gz: f0c9ef650359607c43280a2ad691d039c7a4fefb847e3ef81e5b042f2bd87e2d438fd69fc841390c693cf42411a5a995367eb108165808106f4199287f344ffa
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
gem_check_updates (0.3.
|
4
|
+
gem_check_updates (0.3.2)
|
5
5
|
colored (~> 1.2)
|
6
6
|
em-http-request (~> 1.1)
|
7
7
|
em-synchrony (~> 1.0)
|
@@ -55,7 +55,7 @@ GEM
|
|
55
55
|
diff-lcs (>= 1.2.0, < 2.0)
|
56
56
|
rspec-support (~> 3.8.0)
|
57
57
|
rspec-support (3.8.0)
|
58
|
-
rubocop (0.59.
|
58
|
+
rubocop (0.59.2)
|
59
59
|
jaro_winkler (~> 1.5.1)
|
60
60
|
parallel (~> 1.10)
|
61
61
|
parser (>= 2.5, != 2.5.1.1)
|
@@ -5,58 +5,54 @@ module GemCheckUpdates
|
|
5
5
|
DEFAULT_SCOPE = GemCheckUpdates::VersionScope::MAJOR
|
6
6
|
|
7
7
|
attr_accessor :name
|
8
|
-
attr_accessor :latest_version
|
9
8
|
attr_accessor :current_version
|
9
|
+
attr_accessor :versions
|
10
10
|
attr_accessor :version_range
|
11
11
|
|
12
12
|
def initialize(name: nil,
|
13
13
|
current_version: nil,
|
14
|
+
versions: [],
|
14
15
|
version_range: nil,
|
15
|
-
latest_version: nil,
|
16
16
|
update_scope: DEFAULT_SCOPE)
|
17
17
|
@name = name
|
18
18
|
@current_version = current_version
|
19
|
+
@versions = versions
|
19
20
|
@version_range = version_range
|
20
|
-
@latest_version = latest_version
|
21
21
|
@update_scope = update_scope
|
22
22
|
end
|
23
23
|
|
24
24
|
def update_available?
|
25
|
-
|
25
|
+
!latest_version.nil? &&
|
26
26
|
!@current_version.nil? &&
|
27
|
-
@current_version
|
28
|
-
|
27
|
+
@current_version.version_specified? &&
|
28
|
+
latest_version > @current_version
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
31
|
+
def latest_version
|
32
32
|
# Ignore pre release version (ex. beta, rc), and sort desc
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
.reverse
|
37
|
-
current_major, current_minor = @current_version.split('.')
|
33
|
+
versions = @versions.reject(&:pre_release)
|
34
|
+
.sort_by { |v| [v.major, v.minor, v.patch] }
|
35
|
+
.reverse
|
38
36
|
|
39
37
|
case @update_scope
|
40
38
|
when GemCheckUpdates::VersionScope::MINOR
|
41
|
-
|
39
|
+
versions.select { |v| v.major == @current_version.major }.first
|
42
40
|
when GemCheckUpdates::VersionScope::PATCH
|
43
|
-
|
44
|
-
major
|
45
|
-
major == current_major && minor == current_minor
|
41
|
+
versions.select do |v|
|
42
|
+
v.major == @current_version.major && v.minor == @current_version.minor
|
46
43
|
end.first
|
47
44
|
else
|
48
45
|
# This branch is equal to specifying major updates
|
49
|
-
|
46
|
+
versions.first
|
50
47
|
end
|
51
48
|
end
|
52
49
|
|
53
50
|
def highlighted_latest_version
|
54
|
-
|
55
|
-
|
56
|
-
|
51
|
+
major = @current_version.major == latest_version.major ? latest_version.major : latest_version.major.green
|
52
|
+
minor = @current_version.minor == latest_version.minor ? latest_version.minor : latest_version.minor.green
|
53
|
+
patch = @current_version.patch == latest_version.patch ? latest_version.patch : latest_version.patch.green
|
57
54
|
|
58
|
-
|
59
|
-
end.join('.')
|
55
|
+
[major, minor, patch].join('.')
|
60
56
|
end
|
61
57
|
end
|
62
58
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GemCheckUpdates
|
4
|
+
class GemVersion
|
5
|
+
include Comparable
|
6
|
+
|
7
|
+
attr_accessor :number
|
8
|
+
attr_accessor :major
|
9
|
+
attr_accessor :minor
|
10
|
+
attr_accessor :patch
|
11
|
+
attr_accessor :pre
|
12
|
+
attr_accessor :pre_release
|
13
|
+
|
14
|
+
def initialize(number: '0', pre_release: false)
|
15
|
+
@number = number
|
16
|
+
@major, @minor, @patch, @pre = number.split('.')
|
17
|
+
@pre_release = pre_release
|
18
|
+
end
|
19
|
+
|
20
|
+
def version_specified?
|
21
|
+
@number != '0'
|
22
|
+
end
|
23
|
+
|
24
|
+
def <=>(other)
|
25
|
+
weighted_version <=> other.weighted_version
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_s
|
29
|
+
@number
|
30
|
+
end
|
31
|
+
|
32
|
+
def weighted_version
|
33
|
+
weights = [100, 10, 1]
|
34
|
+
|
35
|
+
[@major, @minor, @patch].map(&:to_i)
|
36
|
+
.map.with_index { |n, i| n * weights[i] }
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module GemCheckUpdates
|
4
4
|
class Gemfile
|
5
5
|
RUBYGEMS_API = 'https://rubygems.org/api/v1/versions'
|
6
|
-
CONCURRENCY =
|
6
|
+
CONCURRENCY = 3
|
7
7
|
|
8
8
|
attr_reader :option
|
9
9
|
attr_reader :file_backup
|
@@ -32,7 +32,8 @@ module GemCheckUpdates
|
|
32
32
|
def parse(update_scope)
|
33
33
|
Bundler::Definition.build(@option.file, nil, nil).dependencies.map do |gem|
|
34
34
|
name = gem.name
|
35
|
-
version_range,
|
35
|
+
version_range, version_number = gem.requirements_list.first.split(' ')
|
36
|
+
version = GemCheckUpdates::GemVersion.new(number: version_number)
|
36
37
|
|
37
38
|
Gem.new(name: name,
|
38
39
|
current_version: version,
|
@@ -44,10 +45,16 @@ module GemCheckUpdates
|
|
44
45
|
def check_updates!
|
45
46
|
EventMachine.synchrony do
|
46
47
|
EventMachine::Synchrony::FiberIterator.new(@gems, CONCURRENCY).each do |gem|
|
47
|
-
http =
|
48
|
-
|
48
|
+
http = EventMachine::HttpRequest.new("#{RUBYGEMS_API}/#{gem.name}.json").get
|
49
|
+
response = JSON.parse(http.response)
|
50
|
+
versions = response.map do |v|
|
51
|
+
number = v['number']
|
52
|
+
pre_release = v['prerelease']
|
49
53
|
|
50
|
-
|
54
|
+
GemCheckUpdates::GemVersion.new(number: number, pre_release: pre_release)
|
55
|
+
end
|
56
|
+
|
57
|
+
gem.versions = versions
|
51
58
|
GemCheckUpdates::Message.out('.')
|
52
59
|
end
|
53
60
|
|
@@ -75,7 +82,7 @@ module GemCheckUpdates
|
|
75
82
|
_, name, old_version = *matcher
|
76
83
|
target = @gems.find { |gem| gem.name == name }
|
77
84
|
|
78
|
-
line.gsub!(old_version, target.latest_version) unless target.nil?
|
85
|
+
line.gsub!(old_version, target.latest_version.to_s) unless target.nil?
|
79
86
|
end
|
80
87
|
|
81
88
|
updated.puts(line)
|
@@ -7,20 +7,19 @@ module GemCheckUpdates
|
|
7
7
|
gemfile = Gemfile.new(option)
|
8
8
|
|
9
9
|
if option.apply
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
gemfile.remove_backup
|
10
|
+
gemfile.backup
|
11
|
+
gemfile.update
|
12
|
+
gemfile.remove_backup
|
14
13
|
|
15
|
-
|
16
|
-
rescue StandardError => e
|
17
|
-
gemfile.restore
|
18
|
-
|
19
|
-
GemCheckUpdates::Message.out(e.message.red)
|
20
|
-
end
|
14
|
+
GemCheckUpdates::Message.update_completed(gemfile)
|
21
15
|
else
|
22
16
|
GemCheckUpdates::Message.updatable_gems(gemfile)
|
23
17
|
end
|
18
|
+
rescue StandardError => e
|
19
|
+
gemfile&.restore
|
20
|
+
|
21
|
+
GemCheckUpdates::Message.out(e.message.red)
|
22
|
+
exit(1)
|
24
23
|
end
|
25
24
|
end
|
26
25
|
end
|
data/lib/gem_check_updates.rb
CHANGED
@@ -17,8 +17,6 @@ require 'gem_check_updates/version_scope'
|
|
17
17
|
require 'gem_check_updates/option'
|
18
18
|
require 'gem_check_updates/message'
|
19
19
|
require 'gem_check_updates/gemfile'
|
20
|
+
require 'gem_check_updates/gem_version'
|
20
21
|
require 'gem_check_updates/gem'
|
21
22
|
require 'gem_check_updates/runner'
|
22
|
-
|
23
|
-
module GemCheckUpdates
|
24
|
-
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem_check_updates
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yusuke Mukai
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -161,6 +161,7 @@ files:
|
|
161
161
|
- gem_check_updates.gemspec
|
162
162
|
- lib/gem_check_updates.rb
|
163
163
|
- lib/gem_check_updates/gem.rb
|
164
|
+
- lib/gem_check_updates/gem_version.rb
|
164
165
|
- lib/gem_check_updates/gemfile.rb
|
165
166
|
- lib/gem_check_updates/message.rb
|
166
167
|
- lib/gem_check_updates/option.rb
|