Class: Toys::SourceInfo
- Inherits:
-
Object
- Object
- Toys::SourceInfo
- Defined in:
- lib/toys/source_info.rb
Overview
Information about the source of a tool, such as the file, git repository, or block that defined it.
Instance Attribute Summary collapse
-
#context_directory ⇒ String?
readonly
The context directory path (normally the directory containing the toplevel toys file or directory).
-
#git_commit ⇒ String?
readonly
The git commit.
-
#git_path ⇒ String?
readonly
The git path.
-
#git_remote ⇒ String?
readonly
The git remote.
-
#parent ⇒ Toys::SourceInfo?
readonly
The parent of this SourceInfo.
-
#priority ⇒ Integer
readonly
The priority of tools defined by this source.
-
#root ⇒ Toys::SourceInfo
readonly
The root ancestor of this SourceInfo.
-
#source ⇒ String, Proc
readonly
The source, which may be a path or a proc.
-
#source_name ⇒ String
(also: #to_s)
readonly
The user-visible name of this source.
-
#source_path ⇒ String?
readonly
The path of the current source file or directory.
-
#source_proc ⇒ Proc?
readonly
The source proc.
-
#source_type ⇒ :file, ...
readonly
Return the type of source.
Instance Method Summary collapse
-
#apply_lib_paths ⇒ self
Apply all lib paths in order from high to low priority.
-
#find_data(path, type: nil) ⇒ String?
Locate the given data file or directory and return an absolute path.
Instance Attribute Details
#context_directory ⇒ String? (readonly)
The context directory path (normally the directory containing the toplevel toys file or directory).
64 65 66 |
# File 'lib/toys/source_info.rb', line 64 def context_directory @context_directory end |
#git_commit ⇒ String? (readonly)
The git commit.
119 120 121 |
# File 'lib/toys/source_info.rb', line 119 def git_commit @git_commit end |
#git_path ⇒ String? (readonly)
The git path.
111 112 113 |
# File 'lib/toys/source_info.rb', line 111 def git_path @git_path end |
#git_remote ⇒ String? (readonly)
The git remote.
103 104 105 |
# File 'lib/toys/source_info.rb', line 103 def git_remote @git_remote end |
#parent ⇒ Toys::SourceInfo? (readonly)
The parent of this SourceInfo.
39 40 41 |
# File 'lib/toys/source_info.rb', line 39 def parent @parent end |
#priority ⇒ Integer (readonly)
The priority of tools defined by this source. Higher values indicate a higher priority. Lower priority values could be negative.
54 55 56 |
# File 'lib/toys/source_info.rb', line 54 def priority @priority end |
#root ⇒ Toys::SourceInfo (readonly)
The root ancestor of this SourceInfo.
46 47 48 |
# File 'lib/toys/source_info.rb', line 46 def root @root end |
#source ⇒ String, Proc (readonly)
The source, which may be a path or a proc.
72 73 74 |
# File 'lib/toys/source_info.rb', line 72 def source @source end |
#source_name ⇒ String (readonly) Also known as: to_s
The user-visible name of this source.
126 127 128 |
# File 'lib/toys/source_info.rb', line 126 def source_name @source_name end |
#source_path ⇒ String? (readonly)
The path of the current source file or directory.
87 88 89 |
# File 'lib/toys/source_info.rb', line 87 def source_path @source_path end |
#source_proc ⇒ Proc? (readonly)
The source proc.
95 96 97 |
# File 'lib/toys/source_info.rb', line 95 def source_proc @source_proc end |
#source_type ⇒ :file, ... (readonly)
Return the type of source.
79 80 81 |
# File 'lib/toys/source_info.rb', line 79 def source_type @source_type end |
Instance Method Details
#apply_lib_paths ⇒ self
Apply all lib paths in order from high to low priority
158 159 160 161 162 |
# File 'lib/toys/source_info.rb', line 158 def apply_lib_paths parent&.apply_lib_paths $LOAD_PATH.unshift(@lib_dir) if @lib_dir && !$LOAD_PATH.include?(@lib_dir) self end |
#find_data(path, type: nil) ⇒ String?
Locate the given data file or directory and return an absolute path.
138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/toys/source_info.rb', line 138 def find_data(path, type: nil) if @data_dir full_path = ::File.join(@data_dir, path) case type when :file return full_path if ::File.file?(full_path) when :directory return full_path if ::File.directory?(full_path) else return full_path if ::File.readable?(full_path) end end parent&.find_data(path, type: type) end |