require_smasher 0.3.1 → 0.3.2
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/.travis.yml +5 -0
- data/lib/require_smasher/classifier.rb +27 -0
- data/lib/require_smasher/file_smasher.rb +28 -0
- data/lib/require_smasher/require_file.rb +27 -34
- data/lib/require_smasher/version.rb +1 -1
- data/lib/require_smasher.rb +20 -15
- data/require_smasher.gemspec +1 -0
- data/todos.txt +0 -1
- metadata +19 -5
- data/lib/require_smasher/require_all.rb +0 -32
- data/lib/require_smasher/require_gem.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03a374a7aa18c6270297dc2c3dc06311f614d9c6
|
4
|
+
data.tar.gz: 23025566b07d29be47c1c6855f766d0c13331a53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05b667cc4d63c1c1af21ba7d5c62340a84480675abf926cdd0a0d79addcd5b5bcc002ee5dc7408c7de36e7b83dd15cf817fff510f7866bc08a7cbe583d19ae04
|
7
|
+
data.tar.gz: e45106516ff3d5bb9b2540028c385292a6ca545fe0e3699fafbbf763800888be403c65b33d4aa88b1cac617f741f77fe0d0f5fb18e6765567e98af375c63d6ae
|
data/.travis.yml
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
# Classify elements in files or gems
|
2
|
+
|
3
|
+
module Classifier
|
4
|
+
class << self
|
5
|
+
def classify(elements)
|
6
|
+
files = []
|
7
|
+
gems = []
|
8
|
+
|
9
|
+
elements.uniq.each do |element|
|
10
|
+
case element_type(element)
|
11
|
+
when :file then files << element
|
12
|
+
when :directory then files.concat(FileSmasher.files_by(element))
|
13
|
+
else gems << element
|
14
|
+
end
|
15
|
+
end
|
16
|
+
{ files: files, gems: gems }
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def element_type(element)
|
22
|
+
return :directory if Dir.exist?(element)
|
23
|
+
return :file if FileSmasher.file?(element)
|
24
|
+
:gem
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# Find files
|
2
|
+
|
3
|
+
module FileSmasher
|
4
|
+
class << self
|
5
|
+
def files_by(directory)
|
6
|
+
raise StandardError, "Directory '#{directory}' does not exist" unless Dir.exist?(directory)
|
7
|
+
Dir.glob("./#{directory}/**/*.rb")
|
8
|
+
end
|
9
|
+
|
10
|
+
def files(directories)
|
11
|
+
raise StandardError, 'Directory was not informed' if directories.empty?
|
12
|
+
|
13
|
+
files = []
|
14
|
+
directories.uniq.each do |directory|
|
15
|
+
files.concat(FileSmasher.files_by(directory))
|
16
|
+
end
|
17
|
+
|
18
|
+
files
|
19
|
+
end
|
20
|
+
|
21
|
+
def file?(element)
|
22
|
+
file = File.expand_path("./#{element}")
|
23
|
+
return true if File.file?(file)
|
24
|
+
return false if element.include?('.')
|
25
|
+
File.file?("#{file}.rb")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,45 +1,38 @@
|
|
1
|
-
|
2
|
-
def self.require_files(files, attempt = 0)
|
3
|
-
raise StandardError, 'File was not informed' if files.empty?
|
4
|
-
errors_list = req_files(files)
|
5
|
-
|
6
|
-
return if errors_list[:files_with_error].empty?
|
7
|
-
attempt += 1 if files == errors_list[:files_with_error]
|
1
|
+
# Handle requiring files
|
8
2
|
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
module RequireFile
|
4
|
+
class << self
|
5
|
+
def require(files)
|
6
|
+
raise StandardError, 'File was not informed' if files.empty?
|
7
|
+
errors_list = require_files(files)
|
8
|
+
files_with_error = errors_list[:files_with_error]
|
12
9
|
|
13
|
-
|
14
|
-
raise StandardError, 'Directory was not informed' if directories.empty?
|
15
|
-
require_files(files(directories))
|
16
|
-
end
|
10
|
+
return if files_with_error.empty?
|
17
11
|
|
18
|
-
|
19
|
-
|
12
|
+
raise StandardError, errors_list[:errors] if files == files_with_error
|
13
|
+
require(files_with_error)
|
14
|
+
end
|
20
15
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
files.concat(Dir.glob(File.join("./#{directory}", '**', '*.rb')))
|
16
|
+
def require_directories(directories)
|
17
|
+
raise StandardError, 'Directory was not informed' if directories.empty?
|
18
|
+
require(FileSmasher.files(directories))
|
25
19
|
end
|
26
|
-
files
|
27
|
-
end
|
28
20
|
|
29
|
-
|
30
|
-
|
21
|
+
private
|
22
|
+
|
23
|
+
def require_files(files)
|
24
|
+
errors_list = { files_with_error: [], errors: [] }
|
31
25
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
26
|
+
files.uniq.each do |file|
|
27
|
+
begin
|
28
|
+
require_relative File.expand_path("./#{file}")
|
29
|
+
rescue LoadError, StandardError => error
|
30
|
+
errors_list[:files_with_error] << file
|
31
|
+
errors_list[:errors] << "Error while requiring file #{file}: #{error.message}"
|
32
|
+
end
|
38
33
|
end
|
39
|
-
end
|
40
34
|
|
41
|
-
|
35
|
+
errors_list
|
36
|
+
end
|
42
37
|
end
|
43
|
-
|
44
|
-
private_class_method :req_files
|
45
38
|
end
|
data/lib/require_smasher.rb
CHANGED
@@ -1,35 +1,40 @@
|
|
1
1
|
require 'require_smasher/version'
|
2
|
-
require 'require_smasher/
|
2
|
+
require 'require_smasher/file_smasher'
|
3
|
+
require 'require_smasher/classifier'
|
3
4
|
require 'require_smasher/require_file'
|
4
|
-
require 'require_smasher/require_all'
|
5
5
|
|
6
6
|
def require_all(*required_list)
|
7
|
-
|
7
|
+
classified = Classifier.classify(required_list)
|
8
|
+
gems = classified[:gems]
|
9
|
+
files = classified[:files]
|
10
|
+
|
11
|
+
gems.uniq.each { |gem| require gem } unless gems.empty?
|
12
|
+
RequireFile.require(files) unless files.empty?
|
8
13
|
end
|
9
14
|
|
10
|
-
def require_gem(
|
11
|
-
|
12
|
-
|
15
|
+
def require_gem(gem)
|
16
|
+
require gem
|
17
|
+
gem
|
13
18
|
end
|
14
19
|
|
15
|
-
def require_dir(
|
16
|
-
|
17
|
-
RequireFile.require_directories(directories)
|
20
|
+
def require_dir(directory)
|
21
|
+
RequireFile.require_directories([directory])
|
18
22
|
end
|
19
23
|
|
20
|
-
def require_file(
|
21
|
-
|
22
|
-
|
24
|
+
def require_file(file)
|
25
|
+
require_relative File.expand_path("./#{file}")
|
26
|
+
nil
|
23
27
|
end
|
24
28
|
|
25
29
|
def require_dirs(*directories)
|
26
|
-
|
30
|
+
RequireFile.require_directories(directories)
|
27
31
|
end
|
28
32
|
|
29
33
|
def require_gems(*gems)
|
30
|
-
|
34
|
+
raise StandardError, 'Gem was not informed' if gems.empty?
|
35
|
+
gems.uniq.each { |gem| require gem }
|
31
36
|
end
|
32
37
|
|
33
38
|
def require_files(*files)
|
34
|
-
|
39
|
+
RequireFile.require(files)
|
35
40
|
end
|
data/require_smasher.gemspec
CHANGED
data/todos.txt
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: require_smasher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joacir Junior
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '10.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubycritic
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.4'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '3.4'
|
97
111
|
description: Require Smasher give you the power to require ruby files in a list of
|
98
112
|
directories and their sub-directories (recursively), a list of ruby files and a
|
99
113
|
list of gems, with just one command.
|
@@ -115,9 +129,9 @@ files:
|
|
115
129
|
- bin/console
|
116
130
|
- bin/setup
|
117
131
|
- lib/require_smasher.rb
|
118
|
-
- lib/require_smasher/
|
132
|
+
- lib/require_smasher/classifier.rb
|
133
|
+
- lib/require_smasher/file_smasher.rb
|
119
134
|
- lib/require_smasher/require_file.rb
|
120
|
-
- lib/require_smasher/require_gem.rb
|
121
135
|
- lib/require_smasher/version.rb
|
122
136
|
- require_smasher.gemspec
|
123
137
|
- todos.txt
|
@@ -142,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
156
|
version: '0'
|
143
157
|
requirements: []
|
144
158
|
rubyforge_project:
|
145
|
-
rubygems_version: 2.6.
|
159
|
+
rubygems_version: 2.6.11
|
146
160
|
signing_key:
|
147
161
|
specification_version: 4
|
148
162
|
summary: A simple way to require ruby files in directories and in its sub-directories,
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module RequireAll
|
2
|
-
def self.req(required_list)
|
3
|
-
result = required_list_classified(required_list)
|
4
|
-
|
5
|
-
RequireGem.req(result[:gems]) unless result[:gems].empty?
|
6
|
-
RequireFile.require_files(result[:files]) unless result[:files].empty?
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.required_list_classified(elements)
|
10
|
-
result = { files: [], gems: [] }
|
11
|
-
|
12
|
-
elements.uniq.each do |element|
|
13
|
-
is_file = file?(element)
|
14
|
-
is_directory = Dir.exist?(element)
|
15
|
-
is_gem = !(is_file || is_directory)
|
16
|
-
|
17
|
-
result[:files] << element if is_file
|
18
|
-
result[:files].concat(RequireFile.files([element])) if is_directory
|
19
|
-
result[:gems] << element if is_gem
|
20
|
-
end
|
21
|
-
result
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.file?(element)
|
25
|
-
file = File.expand_path("./#{element}")
|
26
|
-
return true if File.file?(file)
|
27
|
-
return false if element.include?('.')
|
28
|
-
File.file?("#{file}.rb")
|
29
|
-
end
|
30
|
-
|
31
|
-
private_class_method :required_list_classified, :file?
|
32
|
-
end
|