drg 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7e52689c00f9c11fe0a845187c639503111478a2
4
+ data.tar.gz: 7adbad6788c9342dac8b7924cd3350ea4f152100
5
+ SHA512:
6
+ metadata.gz: 8108423f078d9bc28ccb16b8390b3d65f4174f4dd2118492ede2ea420f071a667a6b2a079c1eb8f6cf0b6f32b25de7780afe813608957168671bdce8aaf701bf
7
+ data.tar.gz: 41a66f0004ab961863457dcb40d1f102fa40da682ee46c34d461309a8b7ad05ea9d9e3643f4428eafc90737e8252f8f2a4cbe7b435cb258202529642e3699f63
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.gem
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ drg
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.2.1
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.1
4
+ before_install: gem install bundler -v 1.10.4
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in drg.gemspec
4
+ gemspec
5
+
6
+ group :development, :test do
7
+ gem "pry", '~> 0.10'
8
+ gem 'object_tracker', '>= 1.0.5'
9
+ gem 'byebug'
10
+ end
11
+ gem 'slop'
data/README.md ADDED
@@ -0,0 +1,41 @@
1
+ # DRG
2
+
3
+ A Ruby utility to help automate common tasks! Currently includes stuff like enhanced dependency management using Bundler and RSpec scaffolding.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'drg'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install drg
20
+
21
+ ## Usage
22
+
23
+ ### Pinning Gems
24
+
25
+ DRG can help you manage your project's gems by updating your Gemfile with pinned versions. Just run:
26
+
27
+ ```bash
28
+ rake drg:pin
29
+ ```
30
+
31
+ Will also try to update all your gems to the most recent version (coming soon).
32
+
33
+ ## Development
34
+
35
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake false` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
36
+
37
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
38
+
39
+ ## Contributing
40
+
41
+ Bug reports and pull requests are welcome on GitHub at https://github.com/ridiculous/drg.
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ $LOAD_PATH.unshift './lib'
2
+ require 'drg'
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec) do |spec|
6
+ spec.pattern = 'spec/lib/**/*_spec.rb'
7
+ end
8
+
9
+ desc 'Run specs'
10
+ task default: :spec
data/bin/console ADDED
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'pp'
5
+
6
+ require 'ruby2ruby'
7
+ require 'ruby_parser'
8
+
9
+ require 'rspec'
10
+ require 'object_tracker'
11
+ require_relative '../spec/spec_helper'
12
+
13
+ # You can add fixtures and/or initialization code here to make experimenting
14
+ # with your gem easier. You can also use a different console, if you like.
15
+
16
+ # (If you use this, don't forget to add pry to your Gemfile!)
17
+ # require 'pry'
18
+ # Pry.start
19
+ require 'irb'
20
+
21
+ def sexp
22
+ ruby = File.readlines(FIXTURE_ROOT.join 'report.rb').join
23
+ parser = RubyParser.new
24
+ ruby2ruby = Ruby2Ruby.new
25
+ parser.process(ruby)
26
+ # ruby2ruby.process(sexp)
27
+ end
28
+
29
+ def sexp_spec
30
+ ruby = File.readlines(FIXTURE_ROOT.join 'report_spec.rb').join
31
+ parser = RubyParser.new
32
+ ruby2ruby = Ruby2Ruby.new
33
+ parser.process(ruby)
34
+ # ruby2ruby.process(sexp)
35
+ end
36
+
37
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
data/drg.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'drg/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "drg"
8
+ spec.version = Drg::VERSION
9
+ spec.authors = ["Ryan Buckley"]
10
+ spec.email = ["arebuckley@gmail.com"]
11
+ spec.summary = %q{DRG automation}
12
+ spec.description = %q{DRG automates common tasks}
13
+ spec.homepage = "https://github.com/ridiculous/drg"
14
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
15
+ spec.bindir = "exe"
16
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
17
+ spec.require_paths = ["lib"]
18
+
19
+ spec.add_dependency 'ruby_parser', '>= 3.7.0', '< 4.0.0'
20
+ spec.add_dependency 'ruby2ruby', '>= 2.2.0', '< 3.0.0'
21
+ spec.add_dependency 'bundler', '~> 1.7'
22
+
23
+ spec.add_development_dependency 'rake', '~> 10.0'
24
+ spec.add_development_dependency 'rspec', '>= 3.2', '< 4'
25
+ end
@@ -0,0 +1,201 @@
1
+ module DRG
2
+ class FileContext
3
+ attr_writer :lines
4
+
5
+ def initialize
6
+ @lines = Set.new
7
+ @is_private = false
8
+ end
9
+
10
+ def add(raw_line, index = 0)
11
+ line_number = index + 1
12
+ line = parse_line(raw_line, line_number)
13
+ @lines << line
14
+ line
15
+ end
16
+
17
+ def inspect
18
+ %Q(#<DRG::FileContext:#{object_id} @lines=#{@lines.count}>, @is_private=false, @is_protected=false>)
19
+ end
20
+
21
+ def lines
22
+ @lines.to_a
23
+ end
24
+
25
+ =begin
26
+
27
+ def set_name *args
28
+ def get_name
29
+ def [](other)
30
+ def +
31
+ def -
32
+ def <=>
33
+ def /
34
+ def eql?
35
+
36
+ =end
37
+ def parse_line(line, line_number)
38
+ case line.to_s.chomp.strip
39
+ when /\A(=begin|=end)/
40
+ nil
41
+ when /class\s+([A-Z]+\w*)/
42
+ return ClassDef.new($1, line_number)
43
+ when /module\s+([A-Z]+\w*)/
44
+ return ModuleDef.new($1, line_number)
45
+ when /def self\.([a-z0-9\[\]_+-<=>?]+)\s*\(?/
46
+ # @todo check if within class << self
47
+ return ClassMethodDef.new($1, line_number, current_class_or_module, @is_private)
48
+ when /def ([a-z0-9\[\]_+-<=>?]+)\s*\(?/
49
+ return InstanceMethodDef.new($1, line_number, current_class_or_module, @is_private)
50
+ when /(.+)\s*(do|\{)(.*)(\}|end)/
51
+ return BlockDef.new($1, $2, $3, line_number, $4)
52
+ when /(.+)\s*(do|\{)(.*)/
53
+ return BlockDef.new($1, $2, $3, line_number)
54
+ when /#*\s*(private|protected)\b/i
55
+ @is_private = true
56
+ when /#*\s*public[\s\n]+/i
57
+ @is_private = false
58
+ when /\A(end|\})\b/i
59
+ close_current_definition unless current_definition.method?
60
+ else
61
+ nil
62
+ end
63
+ NullLine.new(line)
64
+ end
65
+
66
+ def current_definition
67
+ lines.reverse.detect { |line| line.open? } || Definition.new
68
+ end
69
+
70
+ def close_current_definition
71
+ current_definition.close
72
+ end
73
+
74
+ def current_class_or_module
75
+ current_definition = lines.reverse.detect { |line| line.open? && (line.class? || line.mod?) }
76
+ current_definition && current_definition.name
77
+ end
78
+
79
+ def classes
80
+ lines.select { |line| line.class? }
81
+ end
82
+
83
+ def modules
84
+ lines.select { |line| line.mod? }
85
+ end
86
+
87
+ def blocks
88
+ lines.select { |line| line.block? }
89
+ end
90
+
91
+ def methods
92
+ lines.select { |line| line.method? }
93
+ end
94
+
95
+ def last_method
96
+ lines.reverse.detect { |line| line.method? }
97
+ end
98
+
99
+ def last_class
100
+ lines.reverse.detect { |line| line.class? }
101
+ end
102
+
103
+ module NullDefinition
104
+ def class?
105
+ false
106
+ end
107
+
108
+ def mod?
109
+ false
110
+ end
111
+
112
+ def method?
113
+ false
114
+ end
115
+
116
+ def block?
117
+ false
118
+ end
119
+ end
120
+
121
+ class NullLine < DelegateClass(String)
122
+ include NullDefinition
123
+
124
+ def eql?(*)
125
+ false
126
+ end
127
+
128
+ def open?
129
+ false
130
+ end
131
+ end
132
+
133
+ class Definition < Object
134
+ include NullDefinition
135
+ attr_accessor :open, :name, :line_number
136
+
137
+ def initialize(name = nil, line_number = nil, open = true)
138
+ @name, @line_number, @open = name, line_number.to_i, open
139
+ end
140
+
141
+ def inspect
142
+ %Q(#<#{self.class.name} #{instance_variables.map { |i| %Q(#{i}="#{instance_variable_get(i)}") }.join(', ')}>)
143
+ end
144
+
145
+ alias to_s inspect
146
+
147
+ def eql?(other)
148
+ @name == other.name && @line_number == other.line_number
149
+ end
150
+
151
+ def close
152
+ @open = false
153
+ end
154
+
155
+ alias open? open
156
+ alias hash line_number
157
+ end
158
+
159
+ class MethodDefinition < Definition
160
+ attr_accessor :class_name, :is_private
161
+
162
+ def initialize(name, line_number, class_name, is_private)
163
+ super(name, line_number, false)
164
+ @class_name, @is_private = class_name, is_private
165
+ end
166
+
167
+ def method?
168
+ true
169
+ end
170
+ end
171
+
172
+ class ClassDef < Definition
173
+ def class?
174
+ true
175
+ end
176
+ end
177
+
178
+ class ModuleDef < Definition
179
+ def mod?
180
+ true
181
+ end
182
+ end
183
+
184
+ class ClassMethodDef < MethodDefinition
185
+ end
186
+
187
+ class InstanceMethodDef < MethodDefinition
188
+ end
189
+
190
+ class BlockDef < Definition
191
+ def initialize(name, body, opener, line_number, closer = nil)
192
+ super(name, line_number, !!closer) # not open if closer present (single line block)
193
+ @body, @opener, @closer, = body, opener, closer
194
+ end
195
+
196
+ def block?
197
+ true
198
+ end
199
+ end
200
+ end
201
+ end
@@ -0,0 +1,44 @@
1
+ module DRG
2
+ class FileReader
3
+ # = Class
4
+ # Needs to keep track of the context of the file as we scan each line (e.g. what class the
5
+ # current method is defined). As well as an efficient way to loop through the lines
6
+ # @todo add SpecReader
7
+ #
8
+
9
+ include Enumerable
10
+
11
+ def initialize(file_path)
12
+ @file_path = file_path
13
+ end
14
+
15
+ def each
16
+ return to_enum unless block_given?
17
+ File.open(@file_path) do |f|
18
+ while line = f.gets
19
+ yield line
20
+ end
21
+ end
22
+ end
23
+
24
+ def each_with_context
25
+ return enum_for __method__ unless block_given?
26
+ @context = nil
27
+ each_with_index do |line, i|
28
+ current_line = context.add(line, i)
29
+ yield current_line, context
30
+ end
31
+ end
32
+
33
+ def read
34
+ @context = nil
35
+ each_with_index do |line, i|
36
+ context.add(line, i)
37
+ end
38
+ end
39
+
40
+ def context
41
+ @context ||= FileContext.new
42
+ end
43
+ end
44
+ end
data/lib/drg/judge.rb ADDED
@@ -0,0 +1,19 @@
1
+ module DRG
2
+ class Judge
3
+ attr_reader :spec, :file
4
+
5
+ def initialize(file, spec)
6
+ @file, @spec = file, spec
7
+ end
8
+
9
+ def missing_methods
10
+ describes = DRG::Scanner.new(spec).describes
11
+ DRG::Scanner.new(file).methods.select { |method_name|
12
+ describes.detect { |describe_name|
13
+ # turn Report.name or Report#name into .name and #name
14
+ describe_name[/#{Regexp.escape(method_name.sub(/^\w+(\.|#)/, '\1'))}/i]
15
+ }.nil?
16
+ }
17
+ end
18
+ end
19
+ end
data/lib/drg/let.rb ADDED
@@ -0,0 +1,4 @@
1
+ module DRG
2
+ class Let < Struct.new(:name, :value)
3
+ end
4
+ end
@@ -0,0 +1,69 @@
1
+ module DRG
2
+ autoload :Let, 'drg/let'
3
+
4
+ class Scanner
5
+ attr_reader :file
6
+
7
+ def initialize(file)
8
+ @file = file
9
+ end
10
+
11
+ def lets
12
+ _lets = []
13
+ continuation = false
14
+ File.readlines(file).each do |line|
15
+ if continuation && continuation = line.strip != 'end'
16
+ _lets[-1].value << line
17
+ elsif line =~ /\A\s+let\(?:(\w+)\)?\s*do\s*\n/
18
+ continuation = true
19
+ _lets << Let.new($1.strip, '')
20
+ elsif line =~ /\A\s+let\(?:(\w+)\)?\s*\{(.+)\}/m
21
+ _lets << Let.new($1.strip, $2.strip)
22
+ end
23
+ end
24
+ _lets
25
+ end
26
+
27
+ def indentation
28
+ line = nil
29
+ File.open(file) do |f|
30
+ previous_line = nil
31
+ until indent_size(previous_line) != indent_size(line = f.gets)
32
+ previous_line = line
33
+ end
34
+ end
35
+ indent_size(line)
36
+ end
37
+
38
+ def methods
39
+ items = []
40
+ klasses = Set.new
41
+ File.readlines(file).each do |line|
42
+ if line =~ /class (\w+)/
43
+ klasses << $1
44
+ end
45
+ case line.to_s.chomp.strip
46
+ when /#?\s*private/i
47
+ break
48
+ when /def (self)?(\.?[a-z0-9_]+)/
49
+ method_name = $2
50
+ if method_name !~ /\A\./
51
+ method_name = "##{method_name}"
52
+ end
53
+ items << "#{klasses.to_a.join('::')}#{method_name}"
54
+ else
55
+ nil
56
+ end
57
+ end
58
+ items
59
+ end
60
+
61
+ def describes
62
+ File.readlines(file).map { |line| $2 if line =~ /(describe|context)\s*['"%](.+)\s*['"%]/ }.compact
63
+ end
64
+
65
+ def indent_size(line)
66
+ line.to_s.chomp.rstrip[/\s{0,}/].size.to_i
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,27 @@
1
+ module DRG
2
+ module Tasks
3
+ class GemfileLine < Struct.new(:line, :index)
4
+ alias to_s line
5
+
6
+ def ==(other)
7
+ line.to_s == other.to_s
8
+ end
9
+
10
+ # @param [Gem::Version] version responds to version.approximate_recommendation (~> 5.0)
11
+ def update(version)
12
+ if line =~ /,.+\n?/
13
+ line.sub!(/,\s*(.+)\n?/, ", '#{version.to_s}'\n")
14
+ elsif line.end_with?("\n")
15
+ line.sub!("\n", ", '#{version.to_s}'\n")
16
+ else
17
+ line << ", '#{version.to_s}'\n"
18
+ end
19
+ line
20
+ end
21
+
22
+ def version
23
+ line[/, (.+)\n?/, 1]
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,51 @@
1
+ require 'bundler'
2
+
3
+ module DRG
4
+ module Tasks
5
+ class Pinner
6
+ def perform
7
+ log %Q(Pinning Gemfile "#{gemfile}")
8
+ Bundler.locked_gems.specs.each do |spec|
9
+ gem = find_by_name(spec.name)
10
+ next unless gem
11
+ lines[gem.index] = gem.update(spec.version)
12
+ end
13
+ write_to_gemfile
14
+ log %Q(Done)
15
+ end
16
+
17
+ def write_to_gemfile
18
+ File.open(gemfile, 'wb') do |f|
19
+ lines.each do |line|
20
+ f << line
21
+ end
22
+ end
23
+ end
24
+
25
+ def find_by_name(name)
26
+ lines.each_with_index.each do |line, index|
27
+ next if line =~ /:?path:?\s*(=>)?\s*/
28
+ next if line =~ /:?git(hub)?:?\s*(=>)?\s*/
29
+ if line =~ /gem\s*['"]#{name}["']/
30
+ return GemfileLine.new line, index
31
+ end
32
+ end
33
+ nil
34
+ end
35
+
36
+ def lines
37
+ @lines ||= File.readlines(gemfile)
38
+ end
39
+
40
+ def gemfile
41
+ Bundler.default_gemfile
42
+ end
43
+
44
+ private
45
+
46
+ def log(msg = nil)
47
+ puts %Q( * #{msg})
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,3 @@
1
+ module Drg
2
+ VERSION = '0.1.0'.freeze
3
+ end
data/lib/drg.rb ADDED
@@ -0,0 +1,17 @@
1
+ require 'ostruct'
2
+ require 'set'
3
+ require 'drg/version'
4
+
5
+ module DRG
6
+ autoload :FileReader, 'drg/file_reader'
7
+ autoload :Scanner, 'drg/scanner'
8
+ autoload :Judge, 'drg/judge'
9
+ autoload :FileContext, 'drg/file_context'
10
+
11
+ module Tasks
12
+ autoload :Pinner, 'drg/tasks/pinner'
13
+ autoload :GemfileLine, 'drg/tasks/gemfile_line'
14
+ end
15
+ end
16
+
17
+ load 'tasks/drg.rake'
@@ -0,0 +1,8 @@
1
+ require 'rake'
2
+
3
+ namespace :drg do
4
+ desc 'Pins your gems in the Gemfile to the current version (using Gemfile.lock)'
5
+ task :pin do
6
+ DRG::Tasks::Pinner.new.perform
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,151 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: drg
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ryan Buckley
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-08-16 00:00:00.000000000 Z
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
+ - !ruby/object:Gem::Dependency
54
+ name: bundler
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.7'
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '1.7'
67
+ - !ruby/object:Gem::Dependency
68
+ name: rake
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '10.0'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '10.0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: rspec
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '3.2'
88
+ - - "<"
89
+ - !ruby/object:Gem::Version
90
+ version: '4'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '3.2'
98
+ - - "<"
99
+ - !ruby/object:Gem::Version
100
+ version: '4'
101
+ description: DRG automates common tasks
102
+ email:
103
+ - arebuckley@gmail.com
104
+ executables: []
105
+ extensions: []
106
+ extra_rdoc_files: []
107
+ files:
108
+ - ".gitignore"
109
+ - ".ruby-gemset"
110
+ - ".ruby-version"
111
+ - ".travis.yml"
112
+ - Gemfile
113
+ - README.md
114
+ - Rakefile
115
+ - bin/console
116
+ - bin/setup
117
+ - drg.gemspec
118
+ - lib/drg.rb
119
+ - lib/drg/file_context.rb
120
+ - lib/drg/file_reader.rb
121
+ - lib/drg/judge.rb
122
+ - lib/drg/let.rb
123
+ - lib/drg/scanner.rb
124
+ - lib/drg/tasks/gemfile_line.rb
125
+ - lib/drg/tasks/pinner.rb
126
+ - lib/drg/version.rb
127
+ - lib/tasks/drg.rake
128
+ homepage: https://github.com/ridiculous/drg
129
+ licenses: []
130
+ metadata: {}
131
+ post_install_message:
132
+ rdoc_options: []
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ requirements: []
146
+ rubyforge_project:
147
+ rubygems_version: 2.4.6
148
+ signing_key:
149
+ specification_version: 4
150
+ summary: DRG automation
151
+ test_files: []