Module: Lace
- Extended by:
- Lace
- Included in:
- Lace
- Defined in:
- lib/lace.rb,
lib/cmd/diff.rb,
lib/cmd/help.rb,
lib/cmd/list.rb,
lib/cmd/apply.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.5.3"
Instance Attribute Summary collapse
-
#failed ⇒ Object
(also: #failed?)
Returns the value of attribute failed.
Class Method Summary collapse
- .apply ⇒ Object
- .diff ⇒ Object
- .pkgs_folder ⇒ Object
- .pstore ⇒ Object
- .setup ⇒ Object
- .validate ⇒ Object
Instance Method Summary collapse
- #activate ⇒ Object
- #active_packages ⇒ Object
- #deactivate ⇒ Object
- #fetch ⇒ Object
- #help ⇒ Object
- #help_s ⇒ Object
- #inspect ⇒ Object
- #installed_packages ⇒ Object
- #list ⇒ Object
- #remove ⇒ Object
- #system(cmd, *args) ⇒ Object
- #update ⇒ Object
- #upgrade ⇒ Object
- #upgrade_lace_folder ⇒ Object
- #where ⇒ Object
Instance Attribute Details
#failed ⇒ Object 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
.apply ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/cmd/apply.rb', line 10 def apply package_name = ARGV.shift raise ResourceNotSpecified unless package_name ohai "Applying package #{package_name}" package = Package.new(package_name, ARGV.first) diff = PackageUtils.diff(package_name) if diff.added.empty? && diff.removed.empty? puts 'Everything is already in sync. Nothing to do.' return end diff.added.each do |f| dest = f.as_dotfile(Dir.home, package.path) dest_path = dest.to_path.gsub(Dir.home, '$HOME') puts "Link #{f.basename} to #{dest_path}?" next unless ARGV.confirm?("Link #{f.basename} to #{dest_path}?") package.link_file_or_directory(f, dest, force: true) ohai "Linked" end diff.removed.each do |f| dest = f.as_dotfile(Dir.home, package.path) dest_path = dest.to_path.gsub(Dir.home, '$HOME') next unless ARGV.confirm?("Remove link for #{f.basename} from #{dest_path}?") package.unlink_file(f, force: true) ohai "Removed" end end |
.diff ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/cmd/diff.rb', line 9 def diff package_name = ARGV.shift raise ResourceNotSpecified unless package_name package = Package.new(package_name, ARGV.first) diff = PackageUtils.diff package_name if diff.added.empty? && diff.removed.empty? ohai 'Everything is already in sync.' return end ohai 'The following files would be added [+] or removed [-]' diff.added.each do |f| puts "[+] #{f.basename} -> #{f.as_dotfile(Dir.home, package.path).to_path.gsub(Dir.home, '$HOME')}" end diff.removed.each do |f| puts "[-] #{f.basename} -> #{f.as_dotfile(Dir.home, package.path).to_path.gsub(Dir.home, '$HOME')}" end end |
.pkgs_folder ⇒ Object
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 |
.pstore ⇒ Object
18 19 20 |
# File 'lib/lace.rb', line 18 def self.pstore @pstore ||= PStore.new(pkgs_folder/".lace.pstore") end |
.setup ⇒ Object
9 10 11 12 |
# File 'lib/cmd/setup.rb', line 9 def setup package_name = ARGV.shift PackageUtils.setup package_name end |
.validate ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/cmd/validate.rb', line 24 def validate resource = ARGV.shift flavor = ARGV.shift raise ResourceNotSpecified unless resource validation = PackageValidator.new(PackageFacts.new(resource), flavor) puts ERB.new(VALIDATE, trim_mode: '-').result(binding) Lace.failed = true if validation.has_errors? end |
Instance Method Details
#activate ⇒ Object
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_packages ⇒ Object
5 6 7 |
# File 'lib/cmd/list.rb', line 5 def active_packages installed_packages.select(&:is_active?) end |
#deactivate ⇒ Object
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 |
#fetch ⇒ Object
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. onoe "Removing fetched files" FileUtils.rm_rf(target_folder) Lace.failed = true end end |
#help ⇒ Object
34 35 36 |
# File 'lib/cmd/help.rb', line 34 def help puts HELP end |
#help_s ⇒ Object
37 38 39 |
# File 'lib/cmd/help.rb', line 37 def help_s HELP end |
#inspect ⇒ Object
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_packages ⇒ Object
9 10 11 12 13 |
# File 'lib/cmd/list.rb', line 9 def installed_packages Dir.glob(File.join(Lace.pkgs_folder, "**")).sort.map do |p| Package.new(Pathname.new(p).basename.to_s, false) end end |
#list ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'lib/cmd/list.rb', line 15 def list if installed_packages.length > 0 installed_packages.map do |package| puts "[#{Tty.green}#{package.is_active? ? "*" : " "}#{Tty.reset}] #{package.name}#{package.is_modified? ? " (has local changes)":""}" end else puts "There are no pkgs installed" end end |
#remove ⇒ Object
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 |
#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 |
#update ⇒ Object
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 |
#upgrade ⇒ Object
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_folder ⇒ Object
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 |
#where ⇒ Object
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 |