Class: Package

Inherits:
Object
  • Object
show all
Includes:
GitCommands
Defined in:
lib/lace/package/package.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from GitCommands

#clone_args, #clone_repo, #git_dir, #repo_valid?, #reset, #submodules?, #update_repo, #update_submodules

Constructor Details

#initialize(name, flavor = nil) ⇒ Package

Returns a new instance of Package.



9
10
11
12
13
14
15
16
# File 'lib/lace/package/package.rb', line 9

def initialize name, flavor=nil
  require 'cmd/list'
  raise PackageNotInstalled.new(name) unless Lace.installed_packages.include?(name)
  @name = name
  @path = Lace.pkgs_folder/name
  @flavor = flavor
  read_facts!
end

Instance Attribute Details

#factsObject (readonly)

Returns the value of attribute facts.



7
8
9
# File 'lib/lace/package/package.rb', line 7

def facts
  @facts
end

#nameObject (readonly)

Returns the value of attribute name.



7
8
9
# File 'lib/lace/package/package.rb', line 7

def name
  @name
end

#pathObject (readonly)

Returns the value of attribute path.



7
8
9
# File 'lib/lace/package/package.rb', line 7

def path
  @path
end

Instance Method Details

#activate!Object



67
68
69
70
71
72
73
74
# File 'lib/lace/package/package.rb', line 67

def activate!
  files = @facts.config_files
  home_dir = ENV["HOME"]
  files.each do |file|
    # if ends in erb -> generate it
    FileUtils.ln_s file, Pathname.new(file).as_dotfile(home_dir), :force => ARGV.force?
  end
end

#after_updateObject



28
29
30
31
32
33
34
35
# File 'lib/lace/package/package.rb', line 28

def after_update
  return if ARGV.nohooks?
  @path.cd do
    facts.post(:update).each do |cmd|
      system cmd
    end
  end
end

#deactivate!Object



57
58
59
60
61
62
63
64
65
# File 'lib/lace/package/package.rb', line 57

def deactivate!
  files = @facts.config_files
  home_dir = ENV["HOME"]
  files.each do |file|
    file = Pathname.new(file)
    dotfile = file.as_dotfile(home_dir)
    FileUtils.rm_f dotfile if dotfile.exist? && dotfile.readlink == file
  end
end

#is_active?Boolean

Returns:

  • (Boolean)


42
43
44
45
46
47
48
49
50
# File 'lib/lace/package/package.rb', line 42

def is_active?
  if @facts.has_flavors? && @flavor == false
    @facts.flavors.any?{|f| Package.new(@name, f).is_active?}
  else
    linked_files = Set.new Lace.linked_files.map(&:to_s)
    config_files = Set.new @facts.config_files.map(&:to_s)
    config_files.subset? linked_files
  end
end

#is_git_repo?Boolean

Returns:

  • (Boolean)


37
38
39
40
# File 'lib/lace/package/package.rb', line 37

def is_git_repo?
  @target_folder = @path
  repo_valid?
end

#read_facts!Object



52
53
54
55
# File 'lib/lace/package/package.rb', line 52

def read_facts!
  @facts = PackageFacts.new @path
  @facts.flavor_with @flavor
end

#setupObject



18
19
20
21
22
23
24
25
26
# File 'lib/lace/package/package.rb', line 18

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