class Package
Attributes
Public Class Methods
Source
# File lib/lace/package/package.rb, line 10 def initialize(name, flavor = nil) @name = name @path = Lace.pkgs_folder / name raise PackageNotInstalled, name unless @path.exist? @flavor = flavor read_facts! end
Public Instance Methods
Source
# File lib/lace/package/package.rb, line 77 def activate! files = @facts.config_files files.each do |file| link_file file end end
Source
# File lib/lace/package/package.rb, line 30 def after_update return if ARGV.nohooks? @path.cd do facts.post(:update).each do |cmd| system cmd end end end
Source
# File lib/lace/package/package.rb, line 70 def deactivate! files = @facts.config_files files.each do |file| unlink_file file end end
Source
# File lib/lace/package/package.rb, line 52 def is_active? home_dir = Dir.home if @facts.has_flavors? && @flavor == false @facts.flavors.any? { |f| Package.new(@name, f).is_active? } else config_files = Set.new @facts.config_files config_files.all? do |p| dotfile = p.as_dotfile(home_dir, @path) dotfile.exist? and dotfile.symlink? and dotfile.readlink.dirname.to_s.include?(@path) end end end
Source
# File lib/lace/package/package.rb, line 40 def is_git_repo? @target_folder = @path repo_valid? end
Source
# File lib/lace/package/package.rb, line 45 def is_modified? return false unless is_git_repo? @target_folder = @path repo_modified? end
Source
# File lib/lace/package/package.rb, line 93 def link_file(file) home_dir = Dir.home # if ends in erb -> generate it src = file dest = src.as_dotfile(home_dir, @path) if dest.exist? && dest.directory? raise WouldOverwriteError.new(dest, src) unless ARGV.force? FileUtils.mv dest, dest.as_backup end link_file_or_directory src, dest, force: ARGV.force? end
Source
# File lib/lace/package/package.rb, line 106 def link_file_or_directory(src, dest, force: ARGV.force?) dest.dirname.mkpath unless dest.dirname.exist? FileUtils.ln_s src, dest, force: force end
Source
# File lib/lace/package/package.rb, line 65 def read_facts! @facts = PackageFacts.new @path @facts.flavor_with @flavor end
Source
# File lib/lace/package/package.rb, line 19 def setup return if ARGV.nohooks? ENV['LACEPKG_PATH'] = @path @path.cd do facts.setup_files.each do |cmd| safe_system cmd end end end
Source
# File lib/lace/package/package.rb, line 84 def unlink_file(file, force: ARGV.force?) dotfile = file.as_dotfile(Dir.home, @path) if (dotfile.exist? || force) && dotfile.symlink? && dotfile.readlink == file FileUtils.rm_f(dotfile) return true end false end