class MacSetup::SymlinkPathBuilder

Constants

HOME

Public Class Methods

paths_for(root_dir) { |child, rewrite_path(child, root)| ... } click to toggle source
# File lib/mac_setup/symlink_path_builder.rb, line 6
def paths_for(root_dir)
  root = Pathname.new(root_dir)

  each_child(root) do |child|
    yield [child.to_s, rewrite_path(child, root)]
  end
end

Private Class Methods

each_child(dir, &block) click to toggle source
# File lib/mac_setup/symlink_path_builder.rb, line 16
def each_child(dir, &block)
  dir.children.each do |child|
    next if child.basename.to_s.start_with?(".")

    if child.directory?
      each_child(child, &block)
    else
      block.call(child)
    end
  end
end
rewrite_path(path, base) click to toggle source
# File lib/mac_setup/symlink_path_builder.rb, line 28
def rewrite_path(path, base)
  first_part, rest = path.to_s.split(%r{^#{Regexp.escape(base.to_s)}/([^/]+)}).drop(1)
  parts = Dir.exist?(HOME + first_part) ? [HOME, first_part, rest] : [HOME, ".", first_part, rest]
  parts.join
end