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).
40 41 42 |
# File 'lib/toys/source_info.rb', line 40 def context_directory @context_directory end |
#git_commit ⇒ String? (readonly)
The git commit.
95 96 97 |
# File 'lib/toys/source_info.rb', line 95 def git_commit @git_commit end |
#git_path ⇒ String? (readonly)
The git path.
87 88 89 |
# File 'lib/toys/source_info.rb', line 87 def git_path @git_path end |
#git_remote ⇒ String? (readonly)
The git remote.
79 80 81 |
# File 'lib/toys/source_info.rb', line 79 def git_remote @git_remote end |
#parent ⇒ Toys::SourceInfo? (readonly)
The parent of this SourceInfo.
15 16 17 |
# File 'lib/toys/source_info.rb', line 15 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.
30 31 32 |
# File 'lib/toys/source_info.rb', line 30 def priority @priority end |
#root ⇒ Toys::SourceInfo (readonly)
The root ancestor of this SourceInfo.
22 23 24 |
# File 'lib/toys/source_info.rb', line 22 def root @root end |
#source ⇒ String, Proc (readonly)
The source, which may be a path or a proc.
48 49 50 |
# File 'lib/toys/source_info.rb', line 48 def source @source end |
#source_name ⇒ String (readonly) Also known as: to_s
The user-visible name of this source.
102 103 104 |
# File 'lib/toys/source_info.rb', line 102 def source_name @source_name end |
#source_path ⇒ String? (readonly)
The path of the current source file or directory.
63 64 65 |
# File 'lib/toys/source_info.rb', line 63 def source_path @source_path end |
#source_proc ⇒ Proc? (readonly)
The source proc.
71 72 73 |
# File 'lib/toys/source_info.rb', line 71 def source_proc @source_proc end |
#source_type ⇒ :file, ... (readonly)
Return the type of source.
55 56 57 |
# File 'lib/toys/source_info.rb', line 55 def source_type @source_type end |
Instance Method Details
#apply_lib_paths ⇒ self
Apply all lib paths in order from high to low priority
134 135 136 137 138 |
# File 'lib/toys/source_info.rb', line 134 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.
114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/toys/source_info.rb', line 114 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 |