require_dir 0.1.2 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 059b6f8de63b2557966908e76cead3d137642590
4
- data.tar.gz: a2c128d3165444e72c23458ae99c63750d1e8213
2
+ SHA256:
3
+ metadata.gz: 176bbfddf11657c59b8dd1f2254b5b6355fb9c47fa2424ab912148f816c33114
4
+ data.tar.gz: 557bafbcfee44d9e91fb1da631fd84cc27cbb07f9f7a06054b991557a5779dc4
5
5
  SHA512:
6
- metadata.gz: 94811d95ef361b928b7c6d8b5fcc40a38a578dd9fc169c7deeb1ee138e27b16b0bdcfd0e649f112193745f0791486c8c2fe4ad531960138080ea29e79c9fa2d3
7
- data.tar.gz: a6a5ce85dd1f6165c7a61e458c28b765c2addda65192eacc7433e80d93aedb3d874fa4f691bf22b19690503d836536dac1596036abc03e648f61f5af025e0bcd
6
+ metadata.gz: 7f8d135050287dfff5a2c49dd05e325578f14d34d456672e70906d7a9ed85d8c2d43f4adee13445e53807167ae3ccf6c755096e2f56c07613203e2e91b9bd346
7
+ data.tar.gz: 3c0524a4f194f2cb53caadbb44f08e408068362e8278b0c1d7c3ad39192b8336eedaac31e20861310c250eb7c256d7e23d70e09a64dfd8e9c6b493a5ed231f4d
data/.gitignore CHANGED
@@ -1,3 +1,5 @@
1
+ .idea/
2
+ **/.DS_Store
1
3
  /.bundle/
2
4
  /.yardoc
3
5
  /Gemfile.lock
data/.rspec CHANGED
@@ -1,2 +1,2 @@
1
- --format documentation
1
+ --format progress
2
2
  --color
data/.travis.yml CHANGED
@@ -1,10 +1,20 @@
1
1
  language: ruby
2
2
  env:
3
- - CODECLIMATE_REPO_TOKEN=703cb4759e977bdd9502305ae454a0acdf7bd0d51d418e88048110f4735c4a80
3
+ global:
4
+ - CODECLIMATE_REPO_TOKEN=703cb4759e977bdd9502305ae454a0acdf7bd0d51d418e88048110f4735c4a80
4
5
  rvm:
5
- - 2.2.3
6
- - 2.3.0
7
- script: "bundle exec rspec"
6
+ - 2.2.9
7
+ - 2.3.6
8
+ - 2.4.3
9
+ - 2.5.0
10
+ before_script:
11
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
12
+ - chmod +x ./cc-test-reporter
13
+ - ./cc-test-reporter before-build
14
+ script:
15
+ - bundle exec rspec
16
+ after_script:
17
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
8
18
  notifications:
9
19
  email:
10
20
  recipients:
data/README.md CHANGED
@@ -3,11 +3,9 @@
3
3
  [![Gem Version](https://badge.fury.io/rb/require_dir.svg)](https://badge.fury.io/rb/require_dir)
4
4
  [![Downloads](http://ruby-gem-downloads-badge.herokuapp.com/require_dir?type=total)](https://rubygems.org/gems/require_dir)
5
5
 
6
- <br />
7
-
8
- [![Build Status](https://travis-ci.org/kigster/require_dir.svg?branch=master)](https://travis-ci.org/kigster/warp-dir)
9
- [![Code Climate](https://codeclimate.com/github/kigster/require_dir/badges/gpa.svg)](https://codeclimate.com/githb/kigster/require_dir)
10
- [![Test Coverage](https://codeclimate.com/github/kigster/require_dir/badges/coverage.svg)](https://codeclimate.com/github/kigster/require_dir/coverage)
6
+ [![Build Status](https://travis-ci.org/kigster/require_dir.svg?branch=master)](https://travis-ci.org/kigster/require_dir)
7
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/ad8aceb1bb3c22f72194/test_coverage)](https://codeclimate.com/github/kigster/require_dir/test_coverage)
8
+ [![Maintainability](https://api.codeclimate.com/v1/badges/ad8aceb1bb3c22f72194/maintainability)](https://codeclimate.com/github/kigster/require_dir/maintainability)
11
9
  [![Issue Count](https://codeclimate.com/github/kigster/require_dir/badges/issue_count.svg)](https://codeclimate.com/github/kigster/require_dir)
12
10
 
13
11
 
@@ -17,7 +15,7 @@ Unlike other gems, such as `require_all`, this gem does suffer from module clobb
17
15
 
18
16
  ## Author
19
17
 
20
- This library is the work of [Konstantin Gredeskoul](http:/kig.re), &copy; 2016, distributed under the MIT license.
18
+ This library is the work of [Konstantin Gredeskoul](http:/kig.re), &copy; 2016-2018, distributed under the MIT license.
21
19
 
22
20
  ## Installation
23
21
 
@@ -43,15 +41,17 @@ Recommended usage is to include this gem's module into the top level module of y
43
41
  # file 'lib/mylib.rb' -- top level file for a gem 'mylib'
44
42
  require 'require_dir'
45
43
  module Mylib
46
- extend RequireDir
47
- init __FILE__
44
+ RequireDir.enable_require_dir!(self, __FILE__)
48
45
  end
49
46
 
50
- Mylib.dir('mylib/subfolder') # loads all files in the folder 'lib/mylib/subfolder/*.rb'
51
- Mylib.dir_r('mylib/subfolder') # recursive load from 'lib/mylib/subfolder/**/*.rb'
47
+ Mylib.require_dir('mylib/subfolder') # loads all files in the folder 'lib/mylib/subfolder/*.rb'
48
+ Mylib.require_dir_r('mylib/subfolder') # recursive load from 'lib/mylib/subfolder/**/*.rb'
52
49
 
53
50
  ```
54
51
 
52
+ You can also use shorcuts `dir` and `dir_r`, which are equivalent to `require_dir` and `require_dir_r` respectively.
53
+
54
+
55
55
  ### Offset
56
56
 
57
57
  You can optionally load the library using `init_with_offset` method, which allows you
@@ -66,8 +66,7 @@ be able to later use RequireDir to load files relative to `lib`. This is how you
66
66
  require 'require_dir'
67
67
  module Mylib
68
68
  module SubFolder
69
- extend RequireDir
70
- init_with_offset(__FILE__, 1)
69
+ RequireDir.enable_require_dir!(self, __FILE__, 1)
71
70
  end
72
71
  end
73
72
 
@@ -86,8 +85,7 @@ exploded. You can enable debugging output using two methods:
86
85
  * Initialize library with options hash, setting:
87
86
 
88
87
  ```ruby
89
- extend RequireDir
90
- init __FILE__, debug: true
88
+ RequireDir.enable_require_dir!(self, __FILE__, 0, debug: true)
91
89
  ```
92
90
 
93
91
  ## Development
data/Rakefile CHANGED
@@ -1,6 +1,35 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+ require 'yard'
4
+
5
+ def shell(*args)
6
+ puts "running: #{args.join(' ')}"
7
+ system(args.join(' '))
8
+ end
9
+
10
+ task :clean do
11
+ shell('rm -rf pkg/ tmp/ coverage/ doc/' )
12
+ end
13
+
14
+ task :gem => [:build] do
15
+ shell('gem install pkg/*')
16
+ end
17
+
18
+ task :permissions => [ :clean ] do
19
+ shell("chmod -v o+r,g+r * */* */*/* */*/*/* */*/*/*/* */*/*/*/*/*")
20
+ shell("find . -type d -exec chmod o+x,g+x {} \\;")
21
+ end
22
+
23
+ task :build => :permissions
24
+
25
+ YARD::Rake::YardocTask.new(:doc) do |t|
26
+ t.files = %w(lib/**/*.rb exe/*.rb - README.md LICENSE.txt)
27
+ t.options.unshift('--title','RequireDir')
28
+ t.after = ->() { exec('open doc/index.html') }
29
+ end
3
30
 
4
31
  RSpec::Core::RakeTask.new(:spec)
5
32
 
6
33
  task :default => :spec
34
+
35
+
@@ -0,0 +1,32 @@
1
+ require 'forwardable'
2
+ module RequireDir
3
+ module Initializer
4
+ attr_accessor :loader
5
+ class << self
6
+ def included(base)
7
+ base.instance_eval do
8
+ class << self
9
+ attr_accessor :loader
10
+ extend Forwardable
11
+ def_delegators :@loader, :dir, :dir_r, :require_dir, :require_dir_r
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ def init(source, offset = 0, options = {})
18
+ project_folder = project_folder_from(source: source, offset: offset)
19
+ self.loader = create_loader(options, project_folder)
20
+ end
21
+
22
+ def create_loader(options, project_folder)
23
+ RequireDir::Loader.new(project_folder, options)
24
+ end
25
+
26
+ def project_folder_from(source:, offset: 0)
27
+ dirs_up = ''
28
+ offset.times { dirs_up << '/..' } if offset > 0
29
+ File.dirname(File.expand_path(source + dirs_up))
30
+ end
31
+ end
32
+ end
@@ -1,5 +1,5 @@
1
1
  require 'require_dir/version'
2
-
2
+ require 'colored2'
3
3
  module RequireDir
4
4
  #
5
5
  # This class is meant to be instantiated per project/library, and then used to load
@@ -8,6 +8,12 @@ module RequireDir
8
8
 
9
9
  attr_accessor :project_root, :options
10
10
 
11
+ class << self
12
+ attr_accessor :stderr
13
+ end
14
+
15
+ self.stderr = STDERR
16
+
11
17
  def initialize(root_dir, options = {})
12
18
  raise ArgumentError.new("Folder #{root_dir} is not found") unless Dir.exist?(root_dir)
13
19
  self.project_root = root_dir
@@ -23,25 +29,36 @@ module RequireDir
23
29
  ::Dir.glob(project_root + folder + (recursive ? '/**/*.rb' : '/*.rb') ) do |file|
24
30
  puts "Loading #{file}" if debug?
25
31
  begin
26
- Kernel.require(file)
32
+ Kernel.require file
27
33
  rescue SyntaxError, LoadError => e
28
- len = file.length + 6
29
- STDERR.puts '—' * len
30
- STDERR.puts "⇨ #{file.bold.yellow} ⇦".bold.white
31
- STDERR.puts '—' * len
32
- STDERR.puts e.message.bold.red
33
- STDERR.puts '—' * len
34
- STDERR.puts e.backtrace.join("\n").bold.black if e.backtrace && !e.backtrace.empty?
35
- exit 1
34
+ report_error(e, file)
35
+ raise(e)
36
36
  end
37
37
  end
38
-
39
-
40
38
  end
41
39
 
42
40
  def dir_r(folder)
43
41
  dir(folder, true)
44
42
  end
45
43
 
44
+ alias require_dir dir
45
+ alias require_dir_r dir_r
46
+
47
+ private
48
+
49
+ def report_error(e, file)
50
+ len = file.length + 6
51
+ outputs '—' * len
52
+ outputs "⇨ #{file.bold.yellow} ⇦".bold.white
53
+ outputs '—' * len
54
+ outputs e.message.bold.red
55
+ outputs '—' * len
56
+ outputs e.backtrace.join("\n").bold.black if e.backtrace && !e.backtrace.empty?
57
+ end
58
+
59
+ def outputs(*args)
60
+ self.class.stderr.puts(*args) if self.class.stderr
61
+ end
62
+
46
63
  end
47
64
  end
@@ -1,3 +1,3 @@
1
1
  module RequireDir
2
- VERSION = '0.1.2'
2
+ VERSION = '1.0.0'
3
3
  end
data/lib/require_dir.rb CHANGED
@@ -1,28 +1,34 @@
1
+ require 'forwardable'
2
+
1
3
  require 'require_dir/version'
2
4
  require 'require_dir/loader'
3
- require 'forwardable'
4
- module RequireDir
5
- attr_accessor :loader
5
+ require 'require_dir/initializer'
6
6
 
7
- def project_folder_from(source: , offset: 0)
8
- dirs_up = ''
9
- offset.times { dirs_up << '/..' } if offset > 0
10
- File.dirname(File.expand_path(source + dirs_up))
11
- end
12
7
 
13
- def init_with_offset(source, offset = 0, options = {})
14
- project_folder = project_folder_from(source: source, offset: offset)
15
- self.loader = RequireDir::Loader.new(project_folder, options)
16
- end
8
+ #
9
+ # This module should be used to enable directory-wide
10
+ # requiring of dependent ruby files. Recursive is also supported.
11
+ #
12
+ # @example of the usage:
13
+ #
14
+ # module Foo
15
+ # class Bar
16
+ # RequireDir.enable(self, __FILE__)
17
+ # end
18
+ # end
19
+ # Foo::Bar.dir()
20
+ module RequireDir
21
+ class << self
22
+ # @deprecated Please use {#enable_require_dir!} instead
23
+ def included(klass)
24
+ klass.extend(RequireDir::Initializer)
25
+ klass.include(RequireDir::Initializer)
26
+ end
17
27
 
18
- def init(source, options = {})
19
- init_with_offset(source, 0, options)
28
+ def enable_require_dir!(klass, source_file, offset = 0, **options)
29
+ klass.extend(RequireDir::Initializer)
30
+ klass.include(RequireDir::Initializer)
31
+ klass.init(source_file, offset, options)
32
+ end
20
33
  end
21
-
22
- alias_method :init_from_source, :init_with_offset
23
-
24
- extend Forwardable
25
- def_delegators :@loader, :dir, :dir_r
26
-
27
- extend self
28
34
  end
data/require_dir.gemspec CHANGED
@@ -17,8 +17,10 @@ Gem::Specification.new do |spec|
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
18
  spec.require_paths = %w(lib)
19
19
 
20
+ spec.add_dependency 'colored2'
21
+
20
22
  spec.add_development_dependency 'bundler', '~> 1.12'
21
23
  spec.add_development_dependency 'rake', '~> 10.0'
22
24
  spec.add_development_dependency 'rspec', '~> 3.0'
23
- spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.5'
25
+ spec.add_development_dependency 'simplecov'
24
26
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: require_dir
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Gredeskoul
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-14 00:00:00.000000000 Z
11
+ date: 2018-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colored2
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -53,19 +67,19 @@ dependencies:
53
67
  - !ruby/object:Gem::Version
54
68
  version: '3.0'
55
69
  - !ruby/object:Gem::Dependency
56
- name: codeclimate-test-reporter
70
+ name: simplecov
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - "~>"
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
- version: '0.5'
75
+ version: '0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - "~>"
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: '0.5'
82
+ version: '0'
69
83
  description: 'Easily and non-intrusively require files from sub-folders. Without polluting
70
84
  global namespace, or having modules clobber each other, include RequireDir and initialize
71
85
  it to get access to #dir and #dir_r'
@@ -87,6 +101,7 @@ files:
87
101
  - bin/console
88
102
  - bin/setup
89
103
  - lib/require_dir.rb
104
+ - lib/require_dir/initializer.rb
90
105
  - lib/require_dir/loader.rb
91
106
  - lib/require_dir/version.rb
92
107
  - require_dir.gemspec
@@ -110,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
125
  version: '0'
111
126
  requirements: []
112
127
  rubyforge_project:
113
- rubygems_version: 2.5.1
128
+ rubygems_version: 2.7.6
114
129
  signing_key:
115
130
  specification_version: 4
116
131
  summary: Easily and non-intrusively require files from sub-folders