class Bibliothecary::FileInfo
A representation of a file on the filesystem, with location information and package manager information if needed.
Attributes
folder_path[R]
full_path[R]
package_manager[RW]
relative_path[R]
Public Class Methods
new(folder_path, full_path, contents = nil)
click to toggle source
If the FileInfo
represents an actual file on disk, the contents can be nil and lazy-loaded; we allow contents to be passed in here to allow pulling them from somewhere other than the disk.
# File lib/bibliothecary/file_info.rb, line 29 def initialize(folder_path, full_path, contents = nil) # Note that cleanpath does NOT touch the filesystem, # leaving the lazy-load of file contents as the only # time we touch the filesystem. full_pathname = Pathname.new(full_path) @full_path = full_pathname.cleanpath.to_path if folder_path.nil? # this is the case where we e.g. have filenames from the GitHub API # and don't have a local folder @folder_path = nil @relative_path = @full_path else folder_pathname = Pathname.new(folder_path) @folder_path = folder_pathname.cleanpath.to_path @relative_path = full_pathname.relative_path_from(folder_pathname).cleanpath.to_path end @contents = contents @package_manager = nil end
Public Instance Methods
contents()
click to toggle source
# File lib/bibliothecary/file_info.rb, line 12 def contents @contents ||= begin if @folder_path.nil? # if we have no folder_path then we aren't dealing with a # file that's actually on the filesystem nil else Bibliothecary.utf8_string(File.open(@full_path).read) end end end
groupable?()
click to toggle source
# File lib/bibliothecary/file_info.rb, line 53 def groupable? @package_manager&.groupable?(self) end