class Kamaze::Project::Tools::Packager::Filesystem::Operator

Filesystem operator (manipulator)

This class is intended to manipulate a “Filesystem“.

Attributes

fs[R]

@return [Kamaze::Project::Tools::Packager::Filesystem]

options[R]

@return [Hash{Symbol => Object}]

Public Class Methods

new(filesystem, options = {}) click to toggle source

@param [Kamaze::Project::Tools::Packager::Filesystem] filesystem @param [Hash] options @see fs

# File lib/kamaze/project/tools/packager/filesystem/operator.rb, line 31
def initialize(filesystem, options = {})
  @fs = filesystem
  @options = { verbose: true }.merge(options.to_h)

  # Pass included methods to protected
  utils_methods.each do |m|
    next unless self.public_methods.include?(m)

    # rubocop:disable Style/AccessModifierDeclarations
    self.singleton_class.class_eval { protected m }
    # rubocop:enable Style/AccessModifierDeclarations
  end
end

Public Instance Methods

prepare() click to toggle source

Prepare package

@return [self]

# File lib/kamaze/project/tools/packager/filesystem/operator.rb, line 48
def prepare
  fs.package_dirs.each_value { |dir| mkdir_p(dir, **options) }

  self.purge_purgeables.prepare_srcdir
end
prepare_srcdir() click to toggle source

Prepare “src“ dir

Source files are refreshed (deleted and copied again)

@return [self]

# File lib/kamaze/project/tools/packager/filesystem/operator.rb, line 68
def prepare_srcdir
  src_dir = Pathname.new(fs.package_dirs.fetch(:src))

  purge(src_dir, options)
  skel_dirs(src_dir, fs.source_files, options)

  fs.source_files.map do |path|
    origin = path.realpath # resolves symlinks

    cp(origin, src_dir.join(path), **options.merge(preserve: true))
  end

  self
end
purge_purgeables() click to toggle source

Purge purgeables elements

@return [self]

# File lib/kamaze/project/tools/packager/filesystem/operator.rb, line 57
def purge_purgeables
  fs.purgeable_dirs.each_value { |dir| purge(dir, **options) }

  self
end
verbose?() click to toggle source
# File lib/kamaze/project/tools/packager/filesystem/operator.rb, line 83
def verbose?
  options[:verbose] == true
end