Class: RubyLens::Index::Manifest
- Inherits:
-
Object
- Object
- RubyLens::Index::Manifest
- Defined in:
- lib/rubylens/index/manifest.rb
Defined Under Namespace
Classes: Package
Instance Attribute Summary collapse
-
#files ⇒ Object
readonly
Returns the value of attribute files.
-
#packages ⇒ Object
readonly
Returns the value of attribute packages.
-
#root ⇒ Object
readonly
Returns the value of attribute root.
-
#warnings ⇒ Object
readonly
Returns the value of attribute warnings.
-
#workspace_files ⇒ Object
readonly
Returns the value of attribute workspace_files.
Class Method Summary collapse
Instance Method Summary collapse
- #build ⇒ Object
-
#initialize(root:, lockfile: nil) ⇒ Manifest
constructor
A new instance of Manifest.
- #package_index_for(path) ⇒ Object
- #relative_workspace_path(path) ⇒ Object
- #workspace_path?(path) ⇒ Boolean
Constructor Details
#initialize(root:, lockfile: nil) ⇒ Manifest
Returns a new instance of Manifest.
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/rubylens/index/manifest.rb', line 20 def initialize(root:, lockfile: nil) @root = Pathname(root)..realpath @lockfile = Pathname(lockfile || @root.join("Gemfile.lock")). @warnings = [] @packages = [] @package_roots = [] @package_index_by_file = {} @package_index_cache = {} @relative_workspace_path_cache = {} end |
Instance Attribute Details
#files ⇒ Object (readonly)
Returns the value of attribute files.
14 15 16 |
# File 'lib/rubylens/index/manifest.rb', line 14 def files @files end |
#packages ⇒ Object (readonly)
Returns the value of attribute packages.
14 15 16 |
# File 'lib/rubylens/index/manifest.rb', line 14 def packages @packages end |
#root ⇒ Object (readonly)
Returns the value of attribute root.
14 15 16 |
# File 'lib/rubylens/index/manifest.rb', line 14 def root @root end |
#warnings ⇒ Object (readonly)
Returns the value of attribute warnings.
14 15 16 |
# File 'lib/rubylens/index/manifest.rb', line 14 def warnings @warnings end |
#workspace_files ⇒ Object (readonly)
Returns the value of attribute workspace_files.
14 15 16 |
# File 'lib/rubylens/index/manifest.rb', line 14 def workspace_files @workspace_files end |
Class Method Details
.build(root:, lockfile: nil) ⇒ Object
16 17 18 |
# File 'lib/rubylens/index/manifest.rb', line 16 def self.build(root:, lockfile: nil) new(root: root, lockfile: lockfile).tap(&:build) end |
Instance Method Details
#build ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/rubylens/index/manifest.rb', line 31 def build @workspace_files = GitRepository.new(@root).selected_files.freeze build_packages @package_roots = @packages.each_with_index.map { |package, index| [package.root, index] } .sort_by { |package_root, _index| -package_root.to_s.length } build_package_index @files = (@workspace_files + @packages.flat_map(&:files)).uniq.freeze self end |
#package_index_for(path) ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/rubylens/index/manifest.rb', line 41 def package_index_for(path) path = path.to_s return @package_index_by_file[path] if @package_index_by_file.key?(path) return @package_index_cache[path] if @package_index_cache.key?(path) @package_index_cache[path] = uncached_package_index_for(path) rescue Errno::ENOENT, Errno::EACCES, Errno::ELOOP nil end |
#relative_workspace_path(path) ⇒ Object
55 56 57 58 59 60 61 62 |
# File 'lib/rubylens/index/manifest.rb', line 55 def relative_workspace_path(path) path = path.to_s return @relative_workspace_path_cache[path] if @relative_workspace_path_cache.key?(path) @relative_workspace_path_cache[path] = Pathname(path).realpath.relative_path_from(@root).to_s rescue Errno::ENOENT, Errno::EACCES, Errno::ELOOP, ArgumentError nil end |