drg 0.16.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -1
- data/Gemfile +4 -8
- data/README.md +15 -119
- data/Rakefile +1 -1
- data/bin/console +4 -1
- data/bin/drg +25 -0
- data/drg.gemspec +1 -1
- data/lib/drg.rb +1 -1
- data/lib/drg/tasks/active_pinner.rb +16 -10
- data/lib/drg/tasks/log.rb +1 -1
- data/lib/drg/version.rb +1 -1
- data/lib/tasks/drg.rake +8 -8
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bbd1cdfa7fcb5728da7c9c46598e8ea6d3ea5c3b
|
4
|
+
data.tar.gz: 110ed7e88d039ff17af04a3c156c76142b8c1818
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10daff99eaf9c71b0c770588fa498a14978abecbdd3ca939bce01106027d8bbc03ce7d6c8d3d217ad2daa315ece08c5374c037c3efb9ab03bedf22b62619b225
|
7
|
+
data.tar.gz: 29b5b8801c69cb2215f105c72d08df7757fc17bc86e56dede81ae107a5e49c92753af326b2e794595edb062bbc0ec7bae63d77ee079d3c49049d2e07d979a91c
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -2,12 +2,8 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in drg.gemspec
|
4
4
|
gemspec
|
5
|
-
|
6
|
-
group :
|
7
|
-
|
8
|
-
gem
|
9
|
-
gem 'object_tracker', '>= 1.0.5'
|
10
|
-
gem 'byebug', require: false
|
5
|
+
|
6
|
+
group :test do
|
7
|
+
gem 'rake', '10.4.2'
|
8
|
+
gem 'byebug' if RUBY_VERSION >= '2.0.0'
|
11
9
|
end
|
12
|
-
gem 'ruby_parser', '3.7.1'
|
13
|
-
gem 'slop'
|
data/README.md
CHANGED
@@ -1,6 +1,5 @@
|
|
1
|
-
# DRG
|
2
|
-
|
3
|
-
[](http://badge.fury.io/rb/drg)
|
1
|
+
# DRG [](https://codeclimate.com/github/ridiculous/drg) [](http://badge.fury.io/rb/drg) [](https://travis-ci.org/ridiculous/drg)
|
2
|
+
|
4
3
|
|
5
4
|
A Ruby utility to help automate dependency management using Bundler. You can pin Gem versions to the current or the next
|
6
5
|
available level.
|
@@ -18,14 +17,16 @@ gem 'drg'
|
|
18
17
|
## Tasks
|
19
18
|
|
20
19
|
```bash
|
21
|
-
rake
|
22
|
-
rake drg:pin
|
23
|
-
rake drg:pin:
|
24
|
-
rake drg:pin:
|
25
|
-
rake drg:pin:
|
26
|
-
rake drg:pin:
|
27
|
-
rake drg:pin:minor_latest
|
28
|
-
rake drg:
|
20
|
+
% rake -T
|
21
|
+
rake drg:pin # Pin the gems in your Gemfile to the current version in the Gemfile.lock
|
22
|
+
rake drg:pin:major # Add the approximate major version of your gems (rails, "~> 4")
|
23
|
+
rake drg:pin:minor # Add the approximate minor version of your gems (rails, "~> 4.2")
|
24
|
+
rake drg:pin:patch # Add the approximate patch version of your gems (rails, "~> 4.2.3")
|
25
|
+
rake drg:pin:latest[gem] # Pin the given gem to the latest version (defaults to all gems)
|
26
|
+
rake drg:pin:minor_latest[gem] # Pin the given gem to the latest available patch version (defaults to all gems)
|
27
|
+
rake drg:pin:patch_latest[gem] # Pin the given gem to the latest available minor version (defaults to all gems)
|
28
|
+
rake drg:unpin # Unpin the gems in your Gemfile
|
29
|
+
rake spec # Run all tests
|
29
30
|
```
|
30
31
|
|
31
32
|
### drg:pin
|
@@ -56,116 +57,11 @@ gem 'therubyracer', '0.12.2', platforms: :ruby
|
|
56
57
|
gem 'drg', '0.4.1' # need this
|
57
58
|
```
|
58
59
|
|
59
|
-
### drg:pin:minor
|
60
|
-
|
61
|
-
Want to pin gems at their __minor__ version?
|
62
|
-
|
63
|
-
```bash
|
64
|
-
rake drg:pin:minor
|
65
|
-
```
|
66
|
-
|
67
|
-
This task will update your Gemfile with the approximate gem's minor version. It'll change:
|
68
|
-
|
69
|
-
```ruby
|
70
|
-
gem 'rails', '4.2.3'
|
71
|
-
```
|
72
|
-
|
73
|
-
to:
|
74
|
-
|
75
|
-
```ruby
|
76
|
-
gem 'rails', '~> 4.2'
|
77
|
-
```
|
78
|
-
|
79
|
-
### drg:pin:patch
|
80
|
-
|
81
|
-
Want to pin gems at their __patch__ version?
|
82
|
-
|
83
|
-
```bash
|
84
|
-
rake drg:pin:patch
|
85
|
-
```
|
86
|
-
|
87
|
-
This task will update your Gemfile with the approximate gem's patch version. It'll change:
|
88
|
-
|
89
|
-
```ruby
|
90
|
-
gem 'rails', '4.2.3'
|
91
|
-
```
|
92
|
-
|
93
|
-
to
|
94
|
-
|
95
|
-
```ruby
|
96
|
-
gem 'rails', '~> 4.2.3'
|
97
|
-
```
|
98
|
-
|
99
|
-
This can be combined with `bundle update` to quickly update all gems to the latest version.
|
100
|
-
|
101
|
-
### drg:pin:major
|
102
|
-
|
103
|
-
Pins your gems at the major level:
|
104
|
-
|
105
|
-
```bash
|
106
|
-
rake drg:pin:major
|
107
|
-
```
|
108
|
-
|
109
|
-
### drg:pin:latest
|
110
|
-
|
111
|
-
Updates each outdated gem to the latest available version:
|
112
|
-
|
113
|
-
```bash
|
114
|
-
rake drg:pin:latest #=> updates all gems in the Gemfile
|
115
|
-
rake drg:pin:latest[<gem>] #=> updates only the specified <gem>
|
116
|
-
```
|
117
|
-
|
118
|
-
### drg:pin:patch_latest
|
119
|
-
|
120
|
-
Updates the patch version for each outdated gem to the latest version:
|
121
|
-
|
122
|
-
```bash
|
123
|
-
rake drg:pin:patch_latest #=> updates all gems in the Gemfile
|
124
|
-
rake drg:pin:patch_latest[<gem>] #=> updates only the specified <gem>
|
125
|
-
```
|
126
|
-
|
127
|
-
### drg:pin:minor_latest
|
128
|
-
|
129
|
-
Same as `patch_latest` except it updates the minor version to the latest
|
130
|
-
|
131
|
-
```bash
|
132
|
-
rake drg:pin:minor_latest #=> updates all gems in the Gemfile
|
133
|
-
rake drg:pin:minor_latest[<gem>] #=> updates only the specified <gem>
|
134
|
-
```
|
135
|
-
|
136
|
-
### drg:unpin
|
137
|
-
|
138
|
-
Remove the versions from your Gemfile. A clean start!
|
139
|
-
|
140
|
-
```bash
|
141
|
-
rake drg:unpin
|
142
|
-
```
|
143
|
-
|
144
60
|
### Automation
|
145
61
|
|
146
|
-
I use the
|
147
|
-
the result if the specs pass or rollback the changes if they
|
148
|
-
|
149
|
-
```bash
|
150
|
-
#!/bin/bash
|
151
|
-
git add Gemfile
|
152
|
-
for cmd in $@; do
|
153
|
-
echo " * Updating $cmd versions"
|
154
|
-
bundle exec rake drg:pin:${cmd}_latest
|
155
|
-
bundle update
|
156
|
-
bundle exec rspec . -t ~js
|
157
|
-
if [ $? -eq 0 ]
|
158
|
-
then
|
159
|
-
echo " * Tests passed after updating $cmd versions. Adding Gemfile ..."
|
160
|
-
git add Gemfile*
|
161
|
-
else
|
162
|
-
echo " * Tests failed after updating $cmd versions. Reverting change to Gemfile ..." >&2
|
163
|
-
git checkout -- Gemfile*
|
164
|
-
bundle
|
165
|
-
exit 1
|
166
|
-
fi
|
167
|
-
done
|
168
|
-
```
|
62
|
+
I use the [bin/drg](https://github.com/ridiculous/drg/blob/master/bin/drg) bash script to update all gems to the latest
|
63
|
+
[major|minor|patch] version, run all tests and then add the result if the specs pass or rollback the changes if they
|
64
|
+
fail (e.g. `bin/drg patch`).
|
169
65
|
|
170
66
|
### Skipping gems
|
171
67
|
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
data/bin/drg
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
if [ "$#" == 0 ]; then
|
4
|
+
echo "Usage: $0 [ major|minor|patch ]"
|
5
|
+
echo ""
|
6
|
+
exit 1
|
7
|
+
fi
|
8
|
+
|
9
|
+
git add Gemfile
|
10
|
+
for cmd in $@; do
|
11
|
+
echo " * Updating $cmd versions"
|
12
|
+
bundle exec rake drg:pin:${cmd}_latest
|
13
|
+
bundle update
|
14
|
+
bundle exec rspec . -t ~js
|
15
|
+
if [ $? -eq 0 ]
|
16
|
+
then
|
17
|
+
echo " * Tests passed after updating $cmd versions. Adding Gemfile ..."
|
18
|
+
git add Gemfile*
|
19
|
+
else
|
20
|
+
echo " * Tests failed after updating $cmd versions. Reverting change to Gemfile ..." >&2
|
21
|
+
git checkout -- Gemfile*
|
22
|
+
bundle
|
23
|
+
exit 1
|
24
|
+
fi
|
25
|
+
done
|
data/drg.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
|
18
18
|
spec.add_dependency 'bundler', '~> 1.10'
|
19
19
|
spec.add_dependency 'duck_puncher', '>= 2.0.0', '<= 3.0.0'
|
20
|
-
spec.add_dependency 'highline', '~> 1.
|
20
|
+
spec.add_dependency 'highline', '~> 1.6'
|
21
21
|
|
22
22
|
spec.add_development_dependency 'rake', '~> 10.0'
|
23
23
|
spec.add_development_dependency 'rspec', '>= 3.2', '< 4'
|
data/lib/drg.rb
CHANGED
@@ -14,30 +14,36 @@ module DRG
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def perform(gem_name = nil)
|
17
|
+
updated_gems = []
|
17
18
|
if gem_name
|
18
|
-
update
|
19
|
+
updated_gems << update(gem_name)
|
19
20
|
else
|
20
21
|
Updater.new.perform do |gems|
|
21
22
|
load_versions gems
|
22
|
-
gems.each
|
23
|
+
gems.each do |gem|
|
24
|
+
updated_gems << update(gem)
|
25
|
+
end
|
23
26
|
end
|
24
27
|
end
|
28
|
+
updated_gems.compact!
|
25
29
|
log %Q(Done)
|
30
|
+
log %Q(You may want to run: "bundle update #{updated_gems.join ' '}") if updated_gems.any?
|
26
31
|
gemfile.write if gemfile.saved_lines.any?
|
27
32
|
end
|
28
33
|
|
29
34
|
# @note calls #latest_minor_version and #latest_patch_version
|
35
|
+
# @returns [nil|String]
|
30
36
|
def update(gem_name)
|
31
37
|
spec = ::Bundler.locked_gems.specs.find { |spec| spec.name == gem_name }
|
32
38
|
gem = spec && gemfile.find_by_name(spec.name)
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
39
|
+
return nil unless gem
|
40
|
+
latest_version = public_send("latest_#{type}_version", spec.name, spec.version)
|
41
|
+
if latest_version
|
42
|
+
log %Q(Updating "#{spec.name}" from #{spec.version.to_s} to #{latest_version})
|
43
|
+
gemfile.update gem, latest_version
|
44
|
+
spec.name
|
45
|
+
else
|
46
|
+
log %Q(No newer #{type} versions found for "#{spec.name}"), :grey
|
41
47
|
end
|
42
48
|
end
|
43
49
|
|
data/lib/drg/tasks/log.rb
CHANGED
data/lib/drg/version.rb
CHANGED
data/lib/tasks/drg.rake
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
require 'rake'
|
2
2
|
|
3
3
|
namespace :drg do
|
4
|
-
desc "
|
4
|
+
desc "Pin 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 '
|
9
|
+
desc 'Unpin the gems in your the Gemfile'
|
10
10
|
task :unpin do
|
11
11
|
DRG::Tasks::Pinner.new.unpin
|
12
12
|
end
|
13
13
|
|
14
14
|
namespace :pin do
|
15
|
-
desc '
|
15
|
+
desc 'Add the approximate minor version of your gems (rails, "~> 4.2")'
|
16
16
|
task :minor do
|
17
17
|
DRG::Tasks::Pinner.new(:minor).perform
|
18
18
|
end
|
19
19
|
|
20
|
-
desc '
|
20
|
+
desc 'Add the approximate major version of your gems (rails, "~> 4")'
|
21
21
|
task :major do
|
22
22
|
DRG::Tasks::Pinner.new(:major).perform
|
23
23
|
end
|
24
24
|
|
25
|
-
desc '
|
25
|
+
desc 'Add the approximate patch version of your gems (rails, "~> 4.2.3")'
|
26
26
|
task :patch do
|
27
27
|
DRG::Tasks::Pinner.new(:patch).perform
|
28
28
|
end
|
29
29
|
|
30
|
-
desc '
|
30
|
+
desc 'Pin the given gem to the latest version (defaults to all gems)'
|
31
31
|
task :latest, [:gem_name] do |_, options|
|
32
32
|
DRG::Tasks::ActivePinner.new(:available).perform(options[:gem_name])
|
33
33
|
end
|
34
34
|
|
35
|
-
desc '
|
35
|
+
desc 'Pin the given gem to the latest available patch version (defaults to all gems)'
|
36
36
|
task :minor_latest, [:gem_name] do |_, options|
|
37
37
|
DRG::Tasks::ActivePinner.new(:minor).perform(options[:gem_name])
|
38
38
|
end
|
39
39
|
|
40
|
-
desc '
|
40
|
+
desc 'Pin the given gem to the latest available minor version (defaults to all gems)'
|
41
41
|
task :patch_latest, [:gem_name] do |_, options|
|
42
42
|
DRG::Tasks::ActivePinner.new(:patch).perform(options[:gem_name])
|
43
43
|
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: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Buckley
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -50,14 +50,14 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '1.
|
53
|
+
version: '1.6'
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '1.
|
60
|
+
version: '1.6'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: rake
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +108,7 @@ files:
|
|
108
108
|
- README.md
|
109
109
|
- Rakefile
|
110
110
|
- bin/console
|
111
|
+
- bin/drg
|
111
112
|
- bin/setup
|
112
113
|
- drg.gemspec
|
113
114
|
- lib/drg.rb
|