Commit b1d1cef4 authored by Damian Montero's avatar Damian Montero Committed by GitHub

Merge pull request #339 from lyxell/fix-removal-of-deleted-packages

Only require package name for removal
parents fe6ac03c 81b575be
...@@ -136,7 +136,7 @@ def upgrade ...@@ -136,7 +136,7 @@ def upgrade
if currentVersion != @pkg.version if currentVersion != @pkg.version
search @pkg.name search @pkg.name
puts "Updating #{@pkg.name}..." puts "Updating #{@pkg.name}..."
remove remove @pkg.name
resolveDependenciesAndInstall resolveDependenciesAndInstall
else else
puts "#{@pkg.name} is already up to date." puts "#{@pkg.name} is already up to date."
...@@ -154,7 +154,7 @@ def upgrade ...@@ -154,7 +154,7 @@ def upgrade
puts "Updating packages..." puts "Updating packages..."
toBeUpdated.each do |package| toBeUpdated.each do |package|
search package search package
remove remove @pkg.name
resolveDependenciesAndInstall resolveDependenciesAndInstall
end end
puts "Packages have been updated." puts "Packages have been updated."
...@@ -351,42 +351,54 @@ def install ...@@ -351,42 +351,54 @@ def install
puts "#{@pkg.name.capitalize} installed!" puts "#{@pkg.name.capitalize} installed!"
end end
def remove def remove (pkgName)
unless @device[:installed_packages].any? { |pkg| pkg[:name] == @pkg.name }
puts "Package #{@pkg.name} isn't installed." #make sure the package is actually installed
unless @device[:installed_packages].any? { |pkg| pkg[:name] == pkgName }
puts "Package #{pkgName} isn't installed."
return return
end end
unless @pkg.is_fake? #if the filelist exists, remove the files and directories installed by the package
if File.file?("meta/#{pkgName}.filelist")
Dir.chdir CREW_CONFIG_PATH do Dir.chdir CREW_CONFIG_PATH do
File.open("meta/#{@pkg.name}.filelist").each_line do |line|
#remove all files installed by the package
File.open("meta/#{pkgName}.filelist").each_line do |line|
begin begin
File.unlink line.chomp File.unlink line.chomp
rescue => exception #swallow exception rescue => exception #swallow exception
end end
end end
File.readlines("meta/#{@pkg.name}.directorylist").reverse.each do |line| #remove all directories installed by the package
File.readlines("meta/#{pkgName}.directorylist").reverse.each do |line|
begin begin
Dir.rmdir line.chomp Dir.rmdir line.chomp
rescue => exception #swallow exception rescue => exception #swallow exception
end end
end end
File.unlink "meta/#{@pkg.name}.filelist" #remove the file and directory list
File.unlink "meta/#{@pkg.name}.directorylist" File.unlink "meta/#{pkgName}.filelist"
File.unlink "meta/#{pkgName}.directorylist"
end end
end end
#remove from installed packages #remove from installed packages
@device[:installed_packages].each do |elem| @device[:installed_packages].each do |elem|
@device[:installed_packages].delete elem if elem[:name] == @pkg.name @device[:installed_packages].delete elem if elem[:name] == pkgName
end end
#update the device manifest
File.open(CREW_CONFIG_PATH + 'device.json', 'w') do |file| File.open(CREW_CONFIG_PATH + 'device.json', 'w') do |file|
out = JSON.parse @device.to_json out = JSON.parse @device.to_json
file.write JSON.pretty_generate(out) file.write JSON.pretty_generate(out)
end end
puts "#{@pkg.name.capitalize} removed!"
puts "#{pkgName.capitalize} removed!"
end end
case @command case @command
...@@ -414,8 +426,7 @@ when "install" ...@@ -414,8 +426,7 @@ when "install"
resolveDependenciesAndInstall resolveDependenciesAndInstall
when "remove" when "remove"
abort 'Removing actions must be ran with sudo.' unless USER == 'root' abort 'Removing actions must be ran with sudo.' unless USER == 'root'
search @pkgName remove @pkgName
remove
when nil when nil
puts "Chromebrew, version 0.2.2" puts "Chromebrew, version 0.2.2"
puts "Usage: crew [command] [package]" puts "Usage: crew [command] [package]"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment