Class: Hashira::Project
- Inherits:
-
Object
- Object
- Hashira::Project
- Defined in:
- lib/hashira/project.rb
Constant Summary collapse
- ROOT_PACKAGE =
"(root)"
Instance Attribute Summary collapse
-
#directories ⇒ Object
readonly
Returns the value of attribute directories.
Class Method Summary collapse
Instance Method Summary collapse
- #files ⇒ Object
-
#initialize(directories) ⇒ Project
constructor
A new instance of Project.
- #label ⇒ Object
- #package(path) ⇒ Object
- #rails? ⇒ Boolean
- #relative(path) ⇒ Object
- #root ⇒ Object
Constructor Details
#initialize(directories) ⇒ Project
Returns a new instance of Project.
28 29 30 31 32 33 |
# File 'lib/hashira/project.rb', line 28 def initialize(directories) missing = directories.reject { Dir.exist?(it) } raise(Hashira::Error, "no such directory: #{missing.join(", ")}") unless missing.empty? @directories = directories.map { it.delete_suffix("/") } @rails = @directories.any? { config?(File.(it)) } end |
Instance Attribute Details
#directories ⇒ Object (readonly)
Returns the value of attribute directories.
35 36 37 |
# File 'lib/hashira/project.rb', line 35 def directories @directories end |
Class Method Details
.detect(directories) ⇒ Object
6 7 8 |
# File 'lib/hashira/project.rb', line 6 def self.detect(directories) new((directories.empty? ? defaults : directories).map { descend(it.delete_suffix("/")) }) end |
Instance Method Details
#files ⇒ Object
39 |
# File 'lib/hashira/project.rb', line 39 def files = @directories.flat_map { Dir["#{it}/**/*.rb"] }.sort |
#label ⇒ Object
49 |
# File 'lib/hashira/project.rb', line 49 def label = @directories.join(", ") |
#package(path) ⇒ Object
41 42 43 44 45 |
# File 'lib/hashira/project.rb', line 41 def package(path) first, rest = relative(path).delete_suffix(".rb").split("/", 2) return ROOT_PACKAGE unless rest || folder?(path, first) contested.include?(first) ? "#{parent(path)}/#{first}" : first end |
#rails? ⇒ Boolean
37 |
# File 'lib/hashira/project.rb', line 37 def rails? = @rails |
#relative(path) ⇒ Object
47 |
# File 'lib/hashira/project.rb', line 47 def relative(path) = path.delete_prefix("#{parent(path)}/") |
#root ⇒ Object
51 |
# File 'lib/hashira/project.rb', line 51 def root = ROOT_PACKAGE |