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/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.0"

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



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

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

#active_packagesObject



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

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

#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



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

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
9
10
11
# File 'lib/cmd/list.rb', line 5

def linked_files
  home_dir = ENV["HOME"]
  Dir.foreach(home_dir).map do |filename|
    next if filename == '.' or filename == '..'
    File.readlink File.join(home_dir, filename) if File.symlink? File.join(home_dir, filename)
  end.compact.uniq
end

#listObject



25
26
27
28
29
30
31
32
33
34
# File 'lib/cmd/list.rb', line 25

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