Sha256: 5f191ad19ff60ccb24d09624de90077317bc8c85516fd633ef7711cfb34d302e

Contents?: true

Size: 1.07 KB

Versions: 4

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'ehbrs_ruby_utils/fs/selected/build_file'

module EhbrsRubyUtils
  module Fs
    class Selected
      class Build
        DEFAULT_TARGET_BASENAME_PROC = proc { |path| path.basename.to_path }

        attr_reader :selected, :target_dir, :target_basename_proc

        def initialize(selected, target_dir, &target_basename_proc)
          @selected = selected
          @target_dir = target_dir.to_pathname
          @target_basename_proc = target_basename_proc.presence || DEFAULT_TARGET_BASENAME_PROC
        end

        def perform
          clear_target_dir
          link_selected_found
        end

        private

        def clear_target_dir
          return unless target_dir.exist?

          target_dir.children.each do |c|
            c.unlink if c.symlink? && c.directory?
          end
        end

        def link_selected_found
          selected.found.each do |found|
            ::EhbrsRubyUtils::Fs::Selected::BuildFile.new(self, found).perform
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ehbrs_ruby_utils-0.44.3 lib/ehbrs_ruby_utils/fs/selected/build.rb
ehbrs_ruby_utils-0.44.2 lib/ehbrs_ruby_utils/fs/selected/build.rb
ehbrs_ruby_utils-0.44.1 lib/ehbrs_ruby_utils/fs/selected/build.rb
ehbrs_ruby_utils-0.44.0 lib/ehbrs_ruby_utils/fs/selected/build.rb