gem_check_updates 0.2.1 → 0.3.0
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 +16 -17
- data/exe/gcu +1 -1
- data/gem_check_updates.gemspec +2 -1
- data/lib/gem_check_updates/gem.rb +11 -24
- data/lib/gem_check_updates/gemfile.rb +25 -6
- data/lib/gem_check_updates/rake_task.rb +24 -0
- data/lib/gem_check_updates/version.rb +1 -1
- data/lib/gem_check_updates.rb +6 -1
- metadata +20 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 609509feec0f6b3360d0dbc3a61def27427e66fac1e13c2753191d405cd477fa
|
4
|
+
data.tar.gz: fb487070cebcecd559f3d38b191bf6dc9d141ec438106f6d9269ee4dc8214956
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11f248b064c90ef50882525514d8befee01b5d5ace0ca0b69c6e68b991c2f731364edfe927c3cd8ddc14e1e50bc39bb043a760c035b32f2c18ce8c5e60ff14da
|
7
|
+
data.tar.gz: c9cdaa0f6814431b8aca28a91e5f4c00f73939f47bc0fd6becfcb19b40cbf7b1cb4a8c88f7701420efddde71d8df75a8b8a007091200b82e9527b2fc45273740
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
gem_check_updates (0.
|
4
|
+
gem_check_updates (0.3.0)
|
5
5
|
colored (~> 1.2)
|
6
|
-
|
6
|
+
em-http-request (~> 1.1)
|
7
|
+
em-synchrony (~> 1.0)
|
7
8
|
|
8
9
|
GEM
|
9
10
|
remote: https://rubygems.org/
|
@@ -14,21 +15,26 @@ GEM
|
|
14
15
|
codeclimate-test-reporter (1.0.8)
|
15
16
|
simplecov (<= 0.13)
|
16
17
|
colored (1.2)
|
18
|
+
cookiejar (0.3.3)
|
17
19
|
crack (0.4.3)
|
18
20
|
safe_yaml (~> 1.0.0)
|
19
21
|
diff-lcs (1.3)
|
20
22
|
docile (1.1.5)
|
21
|
-
|
22
|
-
|
23
|
+
em-http-request (1.1.5)
|
24
|
+
addressable (>= 2.3.4)
|
25
|
+
cookiejar (!= 0.3.1)
|
26
|
+
em-socksify (>= 0.3)
|
27
|
+
eventmachine (>= 1.0.3)
|
28
|
+
http_parser.rb (>= 0.6.0)
|
29
|
+
em-socksify (0.3.2)
|
30
|
+
eventmachine (>= 1.0.0.beta.4)
|
31
|
+
em-synchrony (1.0.6)
|
32
|
+
eventmachine (>= 1.0.0.beta.1)
|
33
|
+
eventmachine (1.2.7)
|
23
34
|
hashdiff (0.3.7)
|
24
|
-
|
25
|
-
domain_name (~> 0.5)
|
35
|
+
http_parser.rb (0.6.0)
|
26
36
|
jaro_winkler (1.5.1)
|
27
37
|
json (2.1.0)
|
28
|
-
mime-types (3.2.2)
|
29
|
-
mime-types-data (~> 3.2015)
|
30
|
-
mime-types-data (3.2018.0812)
|
31
|
-
netrc (0.11.0)
|
32
38
|
parallel (1.12.1)
|
33
39
|
parser (2.5.1.2)
|
34
40
|
ast (~> 2.4.0)
|
@@ -36,10 +42,6 @@ GEM
|
|
36
42
|
public_suffix (3.0.3)
|
37
43
|
rainbow (3.0.0)
|
38
44
|
rake (12.3.1)
|
39
|
-
rest-client (2.0.2)
|
40
|
-
http-cookie (>= 1.0.2, < 2.0)
|
41
|
-
mime-types (>= 1.16, < 4.0)
|
42
|
-
netrc (~> 0.8)
|
43
45
|
rspec (3.8.0)
|
44
46
|
rspec-core (~> 3.8.0)
|
45
47
|
rspec-expectations (~> 3.8.0)
|
@@ -68,9 +70,6 @@ GEM
|
|
68
70
|
json (>= 1.8, < 3)
|
69
71
|
simplecov-html (~> 0.10.0)
|
70
72
|
simplecov-html (0.10.2)
|
71
|
-
unf (0.1.4)
|
72
|
-
unf_ext
|
73
|
-
unf_ext (0.0.7.5)
|
74
73
|
unicode-display_width (1.4.0)
|
75
74
|
webmock (3.4.2)
|
76
75
|
addressable (>= 2.3.6)
|
data/exe/gcu
CHANGED
data/gem_check_updates.gemspec
CHANGED
@@ -32,5 +32,6 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_development_dependency 'webmock', '~> 3.4.2'
|
33
33
|
|
34
34
|
spec.add_dependency 'colored', '~> 1.2'
|
35
|
-
spec.add_dependency '
|
35
|
+
spec.add_dependency 'em-http-request', '~> 1.1'
|
36
|
+
spec.add_dependency 'em-synchrony', '~> 1.0'
|
36
37
|
end
|
@@ -2,23 +2,23 @@
|
|
2
2
|
|
3
3
|
module GemCheckUpdates
|
4
4
|
class Gem
|
5
|
-
|
5
|
+
DEFAULT_SCOPE = GemCheckUpdates::VersionScope::MAJOR
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
attr_accessor :name
|
8
|
+
attr_accessor :latest_version
|
9
|
+
attr_accessor :current_version
|
10
|
+
attr_accessor :version_range
|
11
11
|
|
12
12
|
def initialize(name: nil,
|
13
13
|
current_version: nil,
|
14
14
|
version_range: nil,
|
15
|
-
|
15
|
+
latest_version: nil,
|
16
|
+
update_scope: DEFAULT_SCOPE)
|
16
17
|
@name = name
|
17
18
|
@current_version = current_version
|
18
19
|
@version_range = version_range
|
19
|
-
@latest_version =
|
20
|
-
|
21
|
-
check_update!(update_scope)
|
20
|
+
@latest_version = latest_version
|
21
|
+
@update_scope = update_scope
|
22
22
|
end
|
23
23
|
|
24
24
|
def update_available?
|
@@ -28,20 +28,7 @@ module GemCheckUpdates
|
|
28
28
|
@latest_version > @current_version
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
32
|
-
response = RestClient.get("#{RUBYGEMS_API}/#{name}.json")
|
33
|
-
versions = JSON.parse(response.body)
|
34
|
-
|
35
|
-
@latest_version = scoped_latest_version(versions, update_scope)
|
36
|
-
|
37
|
-
self
|
38
|
-
rescue StandardError => e
|
39
|
-
GemCheckUpdates::Message.out("Failed to check version \"#{@name}\".".red)
|
40
|
-
GemCheckUpdates::Message.out("\n\n")
|
41
|
-
GemCheckUpdates::Message.out(e.message.red)
|
42
|
-
end
|
43
|
-
|
44
|
-
def scoped_latest_version(versions, scope)
|
31
|
+
def scoped_latest_version(versions)
|
45
32
|
# Ignore pre release version (ex. beta, rc), and sort desc
|
46
33
|
numbers = versions.map { |v| v['number'] }
|
47
34
|
.select { |v| v.split('.').size < 4 }
|
@@ -49,7 +36,7 @@ module GemCheckUpdates
|
|
49
36
|
.reverse
|
50
37
|
current_major, current_minor = @current_version.split('.')
|
51
38
|
|
52
|
-
case
|
39
|
+
case @update_scope
|
53
40
|
when GemCheckUpdates::VersionScope::MINOR
|
54
41
|
numbers.select { |n| n.split('.').first == current_major }.first
|
55
42
|
when GemCheckUpdates::VersionScope::PATCH
|
@@ -2,12 +2,19 @@
|
|
2
2
|
|
3
3
|
module GemCheckUpdates
|
4
4
|
class Gemfile
|
5
|
-
|
5
|
+
RUBYGEMS_API = 'https://rubygems.org/api/v1/versions'
|
6
|
+
CONCURRENCY = 5
|
7
|
+
|
8
|
+
attr_reader :option
|
9
|
+
attr_reader :file_backup
|
10
|
+
attr_reader :gems
|
6
11
|
|
7
12
|
def initialize(option = GemCheckUpdates::Option.new)
|
8
13
|
@option = option
|
9
14
|
@file_backup = "#{option.file}.backup"
|
10
15
|
@gems = parse(option.update_scope)
|
16
|
+
|
17
|
+
check_updates!
|
11
18
|
end
|
12
19
|
|
13
20
|
def backup
|
@@ -23,9 +30,7 @@ module GemCheckUpdates
|
|
23
30
|
end
|
24
31
|
|
25
32
|
def parse(update_scope)
|
26
|
-
|
27
|
-
GemCheckUpdates::Message.out('.')
|
28
|
-
|
33
|
+
Bundler::Definition.build(@option.file, nil, nil).dependencies.map do |gem|
|
29
34
|
name = gem.name
|
30
35
|
version_range, version = gem.requirements_list.first.split(' ')
|
31
36
|
|
@@ -34,14 +39,28 @@ module GemCheckUpdates
|
|
34
39
|
version_range: version_range,
|
35
40
|
update_scope: update_scope)
|
36
41
|
end
|
42
|
+
end
|
37
43
|
|
38
|
-
|
44
|
+
def check_updates!
|
45
|
+
EventMachine.synchrony do
|
46
|
+
EventMachine::Synchrony::FiberIterator.new(@gems, CONCURRENCY).each do |gem|
|
47
|
+
http = EM::HttpRequest.new("#{RUBYGEMS_API}/#{gem.name}.json").get
|
48
|
+
versions = JSON.parse(http.response)
|
39
49
|
|
40
|
-
|
50
|
+
gem.latest_version = gem.scoped_latest_version(versions)
|
51
|
+
GemCheckUpdates::Message.out('.')
|
52
|
+
end
|
53
|
+
|
54
|
+
GemCheckUpdates::Message.out("\n\n")
|
55
|
+
EventMachine.stop
|
56
|
+
end
|
57
|
+
|
58
|
+
@gems
|
41
59
|
end
|
42
60
|
|
43
61
|
def update
|
44
62
|
gemfile_lines = []
|
63
|
+
|
45
64
|
File.open(@option.file) do |current|
|
46
65
|
current.each_line do |line|
|
47
66
|
gemfile_lines << line
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GemCheckUpdates
|
4
|
+
class RakeTask < Rake::TaskLib
|
5
|
+
attr_accessor :name
|
6
|
+
attr_accessor :argv
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@name = :gcu
|
10
|
+
@argv = []
|
11
|
+
|
12
|
+
define
|
13
|
+
end
|
14
|
+
|
15
|
+
def define
|
16
|
+
desc 'Check major updates of rubygems, and apply to Gemfile'
|
17
|
+
task(name) { run_task }
|
18
|
+
end
|
19
|
+
|
20
|
+
def run_task
|
21
|
+
GemCheckUpdates::Runner.run(argv)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/gem_check_updates.rb
CHANGED
@@ -3,9 +3,14 @@
|
|
3
3
|
require 'bundler'
|
4
4
|
require 'fileutils'
|
5
5
|
require 'optparse'
|
6
|
-
require 'rest-client'
|
7
6
|
require 'colored'
|
8
7
|
require 'json'
|
8
|
+
require 'rake'
|
9
|
+
require 'rake/tasklib'
|
10
|
+
require 'em-http-request'
|
11
|
+
require 'em-synchrony'
|
12
|
+
require 'em-synchrony/em-http'
|
13
|
+
require 'em-synchrony/fiber_iterator'
|
9
14
|
|
10
15
|
require 'gem_check_updates/version'
|
11
16
|
require 'gem_check_updates/version_scope'
|
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.
|
4
|
+
version: 0.3.0
|
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-09-
|
11
|
+
date: 2018-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -109,19 +109,33 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '1.2'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: em-http-request
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '1.1'
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
124
|
+
version: '1.1'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: em-synchrony
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.0'
|
125
139
|
description: Automatically update and overwrite version of gems in Gemfile
|
126
140
|
email:
|
127
141
|
- mukopikmin@gmail.com
|
@@ -150,6 +164,7 @@ files:
|
|
150
164
|
- lib/gem_check_updates/gemfile.rb
|
151
165
|
- lib/gem_check_updates/message.rb
|
152
166
|
- lib/gem_check_updates/option.rb
|
167
|
+
- lib/gem_check_updates/rake_task.rb
|
153
168
|
- lib/gem_check_updates/runner.rb
|
154
169
|
- lib/gem_check_updates/version.rb
|
155
170
|
- lib/gem_check_updates/version_scope.rb
|