drg 0.3.0 → 0.4.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/README.md +50 -2
- data/drg.gemspec +2 -2
- data/lib/drg/tasks/gemfile.rb +5 -5
- data/lib/drg/tasks/gemfile_line.rb +2 -1
- data/lib/drg/tasks/pinner.rb +18 -5
- data/lib/drg/tasks/updater.rb +2 -2
- data/lib/drg/version.rb +1 -1
- data/lib/tasks/drg.rake +10 -0
- metadata +1 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a23933b53f8d99da37f028d2ff6557c15d9e4fa7
|
4
|
+
data.tar.gz: 960ea1d49e98ec52a5ff05256ce5341d9faaea69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74176ab0b9a789aafa3e4373c6d993b7b4aa3c749921da8b06ae1f809792c51746e971d69985e30364f66360c397dfaa3a66fba2218e095ba86e6201c2bc5891
|
7
|
+
data.tar.gz: 10af8002f7fc2aca2c2cbd94f67b87f7fa9513b5b28c749885f84ad01d9327cb44709976bc931c54a0953ba77dce6753ce3b2f47cf2676fd3ed78f778e399aaf
|
data/README.md
CHANGED
@@ -22,16 +22,64 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
### Pinning Gems
|
24
24
|
|
25
|
-
DRG
|
25
|
+
DRG really wants to help you manage your project's gems. But DRG doesn't want to replace Bundler. Instead we want to build on
|
26
|
+
it. You can "pin" all your versions to the current version listed in the Gemfile.lock:
|
26
27
|
|
27
28
|
```bash
|
28
29
|
rake drg:pin
|
29
30
|
```
|
30
31
|
|
32
|
+
Which will change gems list in your Gemfile to their full version. So if you have a gemfile that looks like:
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
gem 'rails'
|
36
|
+
gem 'byebug', require: false
|
37
|
+
gem 'therubyracer', '~> 0.12', platforms: :ruby
|
38
|
+
|
39
|
+
# gotta include ourselves
|
40
|
+
gem 'drg'
|
41
|
+
```
|
42
|
+
|
43
|
+
to
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
gem 'rails', '4.2.3'
|
47
|
+
gem 'byebug', '5.0.0', require: false
|
48
|
+
gem 'therubyracer', '0.12.2', platforms: :ruby
|
49
|
+
|
50
|
+
# gotta include ourselves
|
51
|
+
gem 'drg', '0.3.1'
|
52
|
+
```
|
53
|
+
|
54
|
+
Although, you may want to pin gems with their _minor_ version (which allows updating patches). To do this, just run:
|
55
|
+
|
56
|
+
```bash
|
57
|
+
rake drg:pin:minor
|
58
|
+
```
|
59
|
+
|
60
|
+
This will change a gem listed like
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
gem 'rails', '4.2.3'
|
64
|
+
```
|
65
|
+
|
66
|
+
to
|
67
|
+
|
68
|
+
```ruby
|
69
|
+
gem 'rails', '~> 4.2'
|
70
|
+
```
|
71
|
+
|
72
|
+
Pinning ignores gems that are fetched from somewhere other than rubygems. For example, gems listed with `:git`, `:github`,
|
73
|
+
or `:path` will be ignored.
|
74
|
+
|
75
|
+
There is also a `rake drg:pin:major` that does what you think.
|
76
|
+
|
77
|
+
This can be combined with `bundle update` to quickly update all gems to the latest patch level.
|
78
|
+
|
31
79
|
### Updating Gems
|
32
80
|
|
33
81
|
DRG can also try to update all outdated gems to the most recent version. It'll update the gem and run your tests. If your
|
34
|
-
tests pass, then it'll update your gemfile with the current version. Similar to what Gemnasium offers.
|
82
|
+
tests pass, then it'll update your gemfile with the current version. Similar to what Gemnasium offers (experience may vary).
|
35
83
|
|
36
84
|
```bash
|
37
85
|
rake drg:update
|
data/drg.gemspec
CHANGED
@@ -16,8 +16,8 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
17
17
|
spec.require_paths = ["lib"]
|
18
18
|
|
19
|
-
spec.add_dependency 'ruby_parser', '>= 3.7.0', '< 4.0.0'
|
20
|
-
spec.add_dependency 'ruby2ruby', '>= 2.2.0', '< 3.0.0'
|
19
|
+
# spec.add_dependency 'ruby_parser', '>= 3.7.0', '< 4.0.0'
|
20
|
+
# spec.add_dependency 'ruby2ruby', '>= 2.2.0', '< 3.0.0'
|
21
21
|
spec.add_dependency 'bundler', '~> 1.10'
|
22
22
|
|
23
23
|
spec.add_development_dependency 'rake', '~> 10.0'
|
data/lib/drg/tasks/gemfile.rb
CHANGED
@@ -7,17 +7,17 @@ module DRG
|
|
7
7
|
@file = ::Bundler.default_gemfile
|
8
8
|
end
|
9
9
|
|
10
|
+
# @param [GemfileLine] gem
|
11
|
+
# @param [String] version to update the gem line with
|
10
12
|
def update(gem, version)
|
11
|
-
lines[gem] = gem.update
|
13
|
+
lines[gem] = gem.update version
|
12
14
|
end
|
13
15
|
|
14
16
|
def find_by_name(name)
|
15
17
|
lines.each_with_index.each do |line, index|
|
16
18
|
next if line =~ /:?path:?\s*(=>)?\s*/
|
17
19
|
next if line =~ /:?git(hub)?:?\s*(=>)?\s*/
|
18
|
-
if line =~ /gem\s*['"]#{name}["']/
|
19
|
-
return GemfileLine.new line, index
|
20
|
-
end
|
20
|
+
return GemfileLine.new line, index if line =~ /gem\s*['"]#{name}["']/
|
21
21
|
end
|
22
22
|
nil
|
23
23
|
end
|
@@ -27,7 +27,7 @@ module DRG
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def write
|
30
|
-
File.open
|
30
|
+
File.open file, 'wb' do |f|
|
31
31
|
lines.each do |line|
|
32
32
|
f << line
|
33
33
|
end
|
@@ -8,7 +8,7 @@ module DRG
|
|
8
8
|
line.to_s == other.to_s
|
9
9
|
end
|
10
10
|
|
11
|
-
# @param [
|
11
|
+
# @param [String] version is the new value for the gem (add/replace)
|
12
12
|
def update(version)
|
13
13
|
if line =~ /,.+\n?/
|
14
14
|
if line =~ /,\s*['"].+['"]/
|
@@ -24,6 +24,7 @@ module DRG
|
|
24
24
|
line
|
25
25
|
end
|
26
26
|
|
27
|
+
# @note not used
|
27
28
|
def version
|
28
29
|
line[/, (.+)\n?/, 1]
|
29
30
|
end
|
data/lib/drg/tasks/pinner.rb
CHANGED
@@ -1,23 +1,36 @@
|
|
1
1
|
module DRG
|
2
2
|
module Tasks
|
3
3
|
class Pinner
|
4
|
-
attr_reader :gemfile
|
4
|
+
attr_reader :gemfile, :type
|
5
5
|
|
6
|
-
def initialize(
|
7
|
-
@
|
6
|
+
def initialize(type = :patch)
|
7
|
+
@type = type
|
8
|
+
@gemfile = Gemfile.new
|
8
9
|
end
|
9
10
|
|
10
11
|
def perform
|
11
12
|
log %Q(Pinning Gemfile "#{gemfile}")
|
12
13
|
::Bundler.locked_gems.specs.each do |spec|
|
13
|
-
gem = gemfile.find_by_name
|
14
|
+
gem = gemfile.find_by_name spec.name
|
14
15
|
next unless gem
|
15
|
-
gemfile.update
|
16
|
+
gemfile.update gem, public_send(type, spec.version.to_s)
|
16
17
|
end
|
17
18
|
gemfile.write
|
18
19
|
log %Q(Done)
|
19
20
|
end
|
20
21
|
|
22
|
+
def patch(version)
|
23
|
+
version
|
24
|
+
end
|
25
|
+
|
26
|
+
def minor(version)
|
27
|
+
"~> #{version[/(\d+\.\d+)/, 1]}"
|
28
|
+
end
|
29
|
+
|
30
|
+
def major(version)
|
31
|
+
"~> #{version[/(\d+)/, 1]}"
|
32
|
+
end
|
33
|
+
|
21
34
|
private
|
22
35
|
|
23
36
|
def log(msg = nil)
|
data/lib/drg/tasks/updater.rb
CHANGED
@@ -30,21 +30,21 @@ module DRG
|
|
30
30
|
log(%Q(Tests passed after updating "#{name}" to version #{latest_version}))
|
31
31
|
gemfile.update(gem, latest_version)
|
32
32
|
else
|
33
|
-
log(%Q(Tests failed after updating "#{name}" to version #{latest_version}))
|
34
33
|
@failures << name
|
35
34
|
end
|
36
35
|
else
|
37
|
-
log(%Q[Failed to install "#{name}" (#{latest_version})])
|
38
36
|
@failures << name
|
39
37
|
end
|
40
38
|
end
|
41
39
|
|
40
|
+
# @note not used
|
42
41
|
# @param [String] name of the gem
|
43
42
|
# @param [String] current_version of the gem
|
44
43
|
def new_versions(name, current_version)
|
45
44
|
versions(name).select { |version| version > current_version }
|
46
45
|
end
|
47
46
|
|
47
|
+
# @note not used
|
48
48
|
# @param [String] name of the gem
|
49
49
|
# @return [Array] a list of available versions (e.g. ['1.2.0', '1.1.0'])
|
50
50
|
def versions(name)
|
data/lib/drg/version.rb
CHANGED
data/lib/tasks/drg.rake
CHANGED
@@ -6,6 +6,16 @@ namespace :drg do
|
|
6
6
|
DRG::Tasks::Pinner.new.perform
|
7
7
|
end
|
8
8
|
|
9
|
+
namespace :pin do
|
10
|
+
task :minor do
|
11
|
+
DRG::Tasks::Pinner.new(:minor).perform
|
12
|
+
end
|
13
|
+
|
14
|
+
task :major do
|
15
|
+
DRG::Tasks::Pinner.new(:major).perform
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
9
19
|
desc 'Updates your gems in the Gemfile to the latest compatible version'
|
10
20
|
task :update do
|
11
21
|
# sh 'cd /Users/ryanbuckley/apps/dontspreadit && which ruby'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Buckley
|
@@ -10,46 +10,6 @@ bindir: exe
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2015-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: ruby_parser
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 3.7.0
|
20
|
-
- - "<"
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 4.0.0
|
23
|
-
type: :runtime
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 3.7.0
|
30
|
-
- - "<"
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 4.0.0
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: ruby2ruby
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: 2.2.0
|
40
|
-
- - "<"
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: 3.0.0
|
43
|
-
type: :runtime
|
44
|
-
prerelease: false
|
45
|
-
version_requirements: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: 2.2.0
|
50
|
-
- - "<"
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: 3.0.0
|
53
13
|
- !ruby/object:Gem::Dependency
|
54
14
|
name: bundler
|
55
15
|
requirement: !ruby/object:Gem::Requirement
|