drg 0.4.2 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/drg.gemspec +2 -1
- data/lib/drg/tasks/gemfile.rb +10 -14
- data/lib/drg/tasks/gemfile_line.rb +17 -4
- data/lib/drg/tasks/pinner.rb +10 -2
- data/lib/drg/tasks/updater.rb +15 -10
- data/lib/drg/version.rb +2 -2
- data/lib/drg.rb +3 -0
- data/lib/tasks/drg.rake +8 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9abe1205b4fdd0cf60c4a18a0e0820ecffd553be
|
4
|
+
data.tar.gz: ea1df095df062541a1f4dbb617b855f08e838125
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4bd3bf791edcc37126ceed1e832e4ebe6377c35db197fce3e13591923861183a4894c3ce3c8836789a46b53948e123d272c207ed77575f3fdba709aa04c7b98
|
7
|
+
data.tar.gz: be7a521bdacf28560799780803083ac5f019e29aeac50903fda4290110668d08fe183424030f17f635800c656e94d2c22112e8511936942f59e426ba36fa63d8
|
data/drg.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'drg/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "drg"
|
8
|
-
spec.version =
|
8
|
+
spec.version = DRG::VERSION
|
9
9
|
spec.authors = ["Ryan Buckley"]
|
10
10
|
spec.email = ["arebuckley@gmail.com"]
|
11
11
|
spec.summary = %q{DRG automation}
|
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
# spec.add_dependency 'ruby_parser', '>= 3.7.0', '< 4.0.0'
|
20
20
|
# spec.add_dependency 'ruby2ruby', '>= 2.2.0', '< 3.0.0'
|
21
21
|
spec.add_dependency 'bundler', '~> 1.10'
|
22
|
+
# spec.add_dependency 'duck_puncher', '1.0.0'
|
22
23
|
|
23
24
|
spec.add_development_dependency 'rake', '~> 10.0'
|
24
25
|
spec.add_development_dependency 'rspec', '>= 3.2', '< 4'
|
data/lib/drg/tasks/gemfile.rb
CHANGED
@@ -3,8 +3,8 @@ module DRG
|
|
3
3
|
class Gemfile
|
4
4
|
attr_accessor :file
|
5
5
|
|
6
|
-
def initialize
|
7
|
-
@file =
|
6
|
+
def initialize(file = ::Bundler.default_gemfile)
|
7
|
+
@file = file
|
8
8
|
end
|
9
9
|
|
10
10
|
# Saves a copy of @lines before changing it (note that #dup and #clone weren't working)
|
@@ -12,8 +12,13 @@ module DRG
|
|
12
12
|
# @param [GemfileLine] gem
|
13
13
|
# @param [String] version to update the gem line with
|
14
14
|
def update(gem, version)
|
15
|
-
@saved_lines = Marshal.load Marshal.dump(lines)
|
16
15
|
lines[gem] = gem.update version
|
16
|
+
write
|
17
|
+
end
|
18
|
+
|
19
|
+
def remove_version(gem)
|
20
|
+
lines[gem] = gem.remove_version
|
21
|
+
write
|
17
22
|
end
|
18
23
|
|
19
24
|
def find_by_name(name)
|
@@ -25,14 +30,6 @@ module DRG
|
|
25
30
|
nil
|
26
31
|
end
|
27
32
|
|
28
|
-
def lines
|
29
|
-
@lines ||= File.readlines file
|
30
|
-
end
|
31
|
-
|
32
|
-
def saved_lines
|
33
|
-
@saved_lines ||= lines
|
34
|
-
end
|
35
|
-
|
36
33
|
def write
|
37
34
|
File.open file, 'wb' do |f|
|
38
35
|
lines.each do |line|
|
@@ -41,9 +38,8 @@ module DRG
|
|
41
38
|
end
|
42
39
|
end
|
43
40
|
|
44
|
-
def
|
45
|
-
@lines
|
46
|
-
write
|
41
|
+
def lines
|
42
|
+
@lines ||= File.readlines file
|
47
43
|
end
|
48
44
|
end
|
49
45
|
end
|
@@ -9,17 +9,30 @@ module DRG
|
|
9
9
|
end
|
10
10
|
|
11
11
|
# @param [String] version is the new value for the gem (add/replace)
|
12
|
+
# @return [String] line
|
12
13
|
def update(version)
|
14
|
+
swap_version(", '#{version.to_s}'")
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return [String] line
|
18
|
+
def remove_version
|
19
|
+
swap_version('')
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [String] line
|
23
|
+
def swap_version(full_version)
|
24
|
+
comment = line =~ /#/ ? " #{line.slice!(/#.*/).strip}" : ''
|
13
25
|
if line =~ /,.+\n?/
|
14
26
|
if line =~ /,\s*['"].+['"]/
|
15
|
-
line[/,\s*['"].+['"]/] =
|
27
|
+
line[/,\s*['"].+['"]/] = full_version
|
16
28
|
else
|
17
|
-
line[/,\s*/] = "
|
29
|
+
line[/,\s*/] = "#{full_version}, "
|
30
|
+
line[/\n/] = "#{comment}\n"
|
18
31
|
end
|
19
32
|
elsif line.end_with?("\n")
|
20
|
-
line.sub!("\n", "
|
33
|
+
line.sub!("\n", "#{full_version}#{comment}\n")
|
21
34
|
else
|
22
|
-
line << "
|
35
|
+
line << full_version << comment << "\n"
|
23
36
|
end
|
24
37
|
line
|
25
38
|
end
|
data/lib/drg/tasks/pinner.rb
CHANGED
@@ -9,13 +9,21 @@ module DRG
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def perform
|
12
|
-
log %Q(Pinning Gemfile "#{gemfile}")
|
12
|
+
log %Q(Pinning Gemfile "#{gemfile.file}")
|
13
13
|
::Bundler.locked_gems.specs.each do |spec|
|
14
14
|
gem = gemfile.find_by_name spec.name
|
15
15
|
next unless gem
|
16
16
|
gemfile.update gem, public_send(type, spec.version.to_s)
|
17
17
|
end
|
18
|
-
|
18
|
+
log %Q(Done)
|
19
|
+
end
|
20
|
+
|
21
|
+
def unpin
|
22
|
+
log %Q(Unpinning Gemfile "#{gemfile.file}")
|
23
|
+
::Bundler.locked_gems.specs.each do |spec|
|
24
|
+
gem = gemfile.find_by_name spec.name
|
25
|
+
gemfile.remove_version gem if gem
|
26
|
+
end
|
19
27
|
log %Q(Done)
|
20
28
|
end
|
21
29
|
|
data/lib/drg/tasks/updater.rb
CHANGED
@@ -25,27 +25,32 @@ module DRG
|
|
25
25
|
log(%Q[Trying to update gem "#{gem.name}" from #{current_version} to #{latest_version}])
|
26
26
|
try_update(gem, latest_version)
|
27
27
|
end
|
28
|
+
if $?.to_i.nonzero?
|
29
|
+
fail Bundler::GemNotFound, "Failed to load the environment. Maybe do `bundle` and try again"
|
30
|
+
end
|
28
31
|
end
|
29
32
|
|
30
33
|
# @param [GemfileLine] gem
|
31
34
|
def try_update(gem, latest_version)
|
32
|
-
gemfile.
|
33
|
-
gemfile.write
|
35
|
+
gemfile.remove_version gem
|
34
36
|
bundler.update(gem.name)
|
37
|
+
if $0.to_i.zero?
|
38
|
+
log(%Q[Succeeded in installing "#{gem.name}" (#{latest_version})])
|
39
|
+
if system('rake')
|
40
|
+
log(%Q[Tests passed! Updating Gemfile with ... "#{gem.name}" (#{latest_version})])
|
41
|
+
gemfile.update(gem, latest_version)
|
42
|
+
else
|
43
|
+
failures << gem.name
|
44
|
+
end
|
45
|
+
else
|
46
|
+
fail StandardError, %Q[Failed to update "#{gem.name}"]
|
47
|
+
end
|
35
48
|
rescue Bundler::GemNotFound, Bundler::InstallError
|
36
49
|
log %Q[Failed to find "#{gem.name}" (#{latest_version})]
|
37
|
-
gemfile.rollback
|
38
50
|
rescue Bundler::VersionConflict
|
39
51
|
# @todo retry it later
|
40
52
|
failures << gem.name
|
41
|
-
gemfile.rollback
|
42
53
|
log %Q(Failed to find a compatible version of "#{gem.name}")
|
43
|
-
else
|
44
|
-
log(%Q[Succeeded in installing "#{gem.name}" (#{latest_version})])
|
45
|
-
unless system('rake')
|
46
|
-
failures << gem.name
|
47
|
-
gemfile.rollback
|
48
|
-
end
|
49
54
|
end
|
50
55
|
|
51
56
|
# @note not used
|
data/lib/drg/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module
|
2
|
-
VERSION = '0.
|
1
|
+
module DRG
|
2
|
+
VERSION = '0.5.0'.freeze
|
3
3
|
end
|
data/lib/drg.rb
CHANGED
data/lib/tasks/drg.rake
CHANGED
@@ -1,16 +1,23 @@
|
|
1
1
|
require 'rake'
|
2
2
|
|
3
3
|
namespace :drg do
|
4
|
-
desc
|
4
|
+
desc "Pins the gems in your Gemfile to the current version in the Gemfile.lock"
|
5
5
|
task :pin do
|
6
6
|
DRG::Tasks::Pinner.new.perform
|
7
7
|
end
|
8
8
|
|
9
|
+
desc 'Unpins the gems in your the Gemfile'
|
10
|
+
task :unpin do
|
11
|
+
DRG::Tasks::Pinner.new.unpin
|
12
|
+
end
|
13
|
+
|
9
14
|
namespace :pin do
|
15
|
+
desc 'Adds the fuzzy match operator to the minor version of your gems (e.g. rails, "~> 4.2")'
|
10
16
|
task :minor do
|
11
17
|
DRG::Tasks::Pinner.new(:minor).perform
|
12
18
|
end
|
13
19
|
|
20
|
+
desc 'Adds the fuzzy match operator to the major version of your gems (e.g. rails, "~> 4")'
|
14
21
|
task :major do
|
15
22
|
DRG::Tasks::Pinner.new(:major).perform
|
16
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Buckley
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|