Module: Lace

Extended by:
Lace
Included in:
Lace
Defined in:
lib/lace.rb,
lib/cmd/help.rb,
lib/cmd/list.rb,
lib/cmd/fetch.rb,
lib/cmd/setup.rb,
lib/cmd/where.rb,
lib/cmd/remove.rb,
lib/cmd/update.rb,
lib/lace/utils.rb,
lib/cmd/inspect.rb,
lib/cmd/upgrade.rb,
lib/cmd/activate.rb,
lib/cmd/validate.rb,
lib/lace/version.rb,
lib/cmd/deactivate.rb

Constant Summary collapse

VERSION =
"0.4.4"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#failedObject Also known as: failed?

Returns the value of attribute failed.



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

def failed
  @failed
end

Class Method Details

.pkgs_folderObject



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

def self.pkgs_folder
  packages_folder = Pathname.new(ENV["HOME"]).join(".lace.pkgs")

  if ENV["LACE_FOLDER"]
    packages_folder = Pathname.new(ENV["LACE_FOLDER"])
  end
  packages_folder
end

.pstoreObject



18
19
20
# File 'lib/lace.rb', line 18

def self.pstore
  @pstore ||= PStore.new(pkgs_folder/".lace.pstore")
end

Instance Method Details

#activateObject



5
6
7
8
9
# File 'lib/cmd/activate.rb', line 5

def activate
  package_name = ARGV.shift
  raise ResourceNotSpecified unless package_name
  PackageUtils.activate package_name
end

#active_packagesObject



20
21
22
23
24
# File 'lib/cmd/list.rb', line 20

def active_packages
  linked_files.map do |path|
    Pathname.new(File.dirname(path)).basename.to_s
  end.uniq
end

#deactivateObject



5
6
7
8
9
# File 'lib/cmd/deactivate.rb', line 5

def deactivate
  package_name = ARGV.shift
  raise ResourceNotSpecified unless package_name
  PackageUtils.deactivate package_name
end

#fetchObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/cmd/fetch.rb', line 5

def fetch
  resource = ARGV.shift
  desired_package_name = ARGV.value "name"
  raise ResourceNotSpecified unless resource
  package_name, target_folder = PackageUtils.fetch(resource, desired_package_name)
  begin
    Package.new(package_name, false)
  rescue PackageFactsNotFound => e
    onoe e.message
    onoe "Removing fetched files"
    FileUtils.rm_rf(target_folder)
    Lace.failed = true
  end
end


10
11
12
13
14
15
16
17
18
# File 'lib/cmd/list.rb', line 10

def find_links dir
  dir.children.map do |path|
    if path.directory? && !path.symlink?
      find_links path
    else
      File.readlink path if path.symlink?
    end
  end.flatten.compact.uniq
end

#helpObject



33
34
35
# File 'lib/cmd/help.rb', line 33

def help
  puts HELP
end

#help_sObject



36
37
38
# File 'lib/cmd/help.rb', line 36

def help_s
  HELP
end

#inspectObject



17
18
19
20
21
22
# File 'lib/cmd/inspect.rb', line 17

def inspect
  resource = ARGV.shift
  raise ResourceNotSpecified unless resource
  package = PackagePresenter.new Package.new(resource, false)
  puts ERB.new(INSPECT).result(binding)
end

#installed_packagesObject



26
27
28
29
30
# File 'lib/cmd/list.rb', line 26

def installed_packages
  Dir.glob(File.join(Lace.pkgs_folder, "**")).sort.map do |p|
    Pathname.new(p).basename.to_s
  end
end

#linked_filesObject



5
6
7
8
# File 'lib/cmd/list.rb', line 5

def linked_files
  home_dir = Pathname.new ENV["HOME"]
  find_links home_dir
end

#listObject



32
33
34
35
36
37
38
39
40
41
# File 'lib/cmd/list.rb', line 32

def list
  if installed_packages.length > 0
    installed_packages.map do |d|
      package = Package.new(d, false)
      puts "[#{Tty.green}#{package.is_active? ? "*" : " "}#{Tty.reset}] #{d}#{package.is_modified? ? " (has local changes)":""}"
    end
  else
    puts "There are no pkgs installed"
  end
end

#removeObject



5
6
7
8
9
# File 'lib/cmd/remove.rb', line 5

def remove
  package_name = ARGV.shift
  raise ResourceNotSpecified unless package_name
  PackageUtils.remove package_name
end

#setupObject



5
6
7
8
# File 'lib/cmd/setup.rb', line 5

def setup
  package_name = ARGV.shift
  PackageUtils.setup package_name
end

#system(cmd, *args) ⇒ Object



100
101
102
103
104
105
106
107
108
109
110
# File 'lib/lace/utils.rb', line 100

def system cmd, *args
  puts "#{cmd} #{args*' '}" if ARGV.verbose?
  fork do
    yield if block_given?
    args.collect!{|arg| arg.to_s}
    exec(cmd.to_s, *args) rescue nil
    exit! 1 # never gets here unless exec failed
  end
  Process.wait
  $?.success?
end

#updateObject



5
6
7
8
9
# File 'lib/cmd/update.rb', line 5

def update
  resource = ARGV.shift
  raise ResourceNotSpecified unless resource
  PackageUtils.update resource
end

#upgradeObject



5
6
7
8
9
10
11
12
13
# File 'lib/cmd/upgrade.rb', line 5

def upgrade
  require 'cmd/list'
  if Lace.active_packages.empty?
    upgrade_lace_folder
  else
    onoe "Please deactivate all packages before continuing"
    Lace.failed = true
  end
end

#upgrade_lace_folderObject



14
15
16
17
18
19
20
# File 'lib/cmd/upgrade.rb', line 14

def upgrade_lace_folder
  old_dir = Pathname.new(ENV["HOME"])/".cassias"
  if old_dir.exist?
    File.rename old_dir, Lace.pkgs_folder
    old_dir.rmdir_if_possible
  end
end

#validateObject



20
21
22
23
24
25
26
27
# File 'lib/cmd/validate.rb', line 20

def validate
  resource = ARGV.shift
  flavor = ARGV.shift
  raise ResourceNotSpecified unless resource
  validation = PackageValidator.new(PackageFacts.new(resource), flavor)
  puts ERB.new(VALIDATE, nil, '-').result(binding)
  Lace.failed = true if validation.has_errors?
end

#whereObject



5
6
7
8
9
10
11
12
13
14
15
# File 'lib/cmd/where.rb', line 5

def where
  package_name = ARGV.shift
  raise ResourceNotSpecified unless package_name
  begin
    package = Package.new(package_name, false)
    puts "#{package.path}"
  rescue PackageFactsNotFound => e
    onoe "asd"
    Lace.failed = true
  end
end