Class: PackageUtils

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

Class Method Summary collapse

Class Method Details

.activate(package_name) ⇒ Object

Raises:



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

def self.activate(package_name)
  package = Package.new(package_name, ARGV.first)
  raise(AlreadyActiveError) if Package.new(package_name, false).is_active?

  ohai('Activating')
  package.activate!
end

.deactivate(package_name) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/lace/package/utils.rb', line 35

def self.deactivate(package_name)
  package = Package.new(package_name, ARGV.first)
  raise(NonActiveFlavorError) unless package.is_active? || ARGV.force?

  ohai('Deactivating')
  package.deactivate!
end

.diff(package_name) ⇒ Object



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

def self.diff(package_name)
  home_dir = Dir.home
  package = Package.new(package_name, ARGV.first)
  config_files = Set.new(package.facts.config_files)
  files_pointing_to_package = symlinks_to_package(package)
  files_from_manifest_not_in_home = Set.new(config_files.reject do |f|
    f.as_dotfile(home_dir, package.path).exist?
  end)
  Diff.new(files_from_manifest_not_in_home, (files_pointing_to_package - config_files))
end

.fetch(uri, desired_package_name = nil) ⇒ Object



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

def self.fetch(uri, desired_package_name = nil)
  downloader_cls = DownloadStrategyDetector.detect(uri)
  downloader = downloader_cls.new(uri, desired_package_name)
  raise(PackageAlreadyInstalled, downloader.target_folder) if downloader.target_folder.exist?

  downloader.fetch
  [downloader.name, downloader.target_folder]
end

.remove(package_name) ⇒ Object



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

def self.remove(package_name)
  package = Package.new(package_name, false)
  raise(CannotRemoveActivePackage) if package.is_active?

  ohai('Removing')
  FileUtils.rm_rf(package.path)
end

.setup(package_name) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/lace/package/utils.rb', line 26

def self.setup(package_name)
  package = Package.new(package_name, ARGV.first)
  package.activate!
  package.setup
rescue StandardError => e
  onoe(e.message)
  odie('Package remains installed but was not activated')
end


76
77
78
79
80
81
# File 'lib/lace/package/utils.rb', line 76

def self.symlinks_to_package(package)
  home_dir = Dir.home
  found_links = Set.new
  traverse_directory(home_dir, package) { |entry| (found_links << Pathname.new(File.readlink(entry))) }
  found_links
end

.update(package_name) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/lace/package/utils.rb', line 51

def self.update(package_name)
  package = Package.new(package_name, false)
  raise(OnlyGitReposCanBeUpdatedError) unless package.is_git_repo?

  updater = GitUpdateStrategy.new(package_name)
  was_active_before_update = package.is_active?
  deactivate(package_name) if was_active_before_update
  ohai('Updating')
  updater.update
  activate(package_name) if was_active_before_update
  package = Package.new(package_name, false)
  package.after_update
end