Added Package.reinstall().

This commit is contained in:
Martin Edenhofer 2013-03-19 13:12:22 +01:00
parent 51ab301745
commit 245f9410bf

View file

@ -179,11 +179,13 @@ class Package < ApplicationModel
# verify if package can get installed # verify if package can get installed
package_db = Package.where( :name => meta[:name] ).first package_db = Package.where( :name => meta[:name] ).first
if package_db if package_db
if Gem::Version.new( package_db.version ) == Gem::Version.new( meta[:version] ) if !data[:reinstall]
raise "Package '#{meta[:name]}-#{meta[:version]}' already installed!" if Gem::Version.new( package_db.version ) == Gem::Version.new( meta[:version] )
end raise "Package '#{meta[:name]}-#{meta[:version]}' already installed!"
if Gem::Version.new( package_db.version ) > Gem::Version.new( meta[:version] ) end
raise "Newer version (#{package_db.version}) of package '#{meta[:name]}-#{meta[:version]}' already installed!" if Gem::Version.new( package_db.version ) > Gem::Version.new( meta[:version] )
raise "Newer version (#{package_db.version}) of package '#{meta[:name]}-#{meta[:version]}' already installed!"
end
end end
# uninstall old package # uninstall old package
@ -196,13 +198,15 @@ class Package < ApplicationModel
# store package # store package
record = Package.create( meta ) record = Package.create( meta )
Store.add( if !data[:reinstall]
:object => 'Package', Store.add(
:o_id => record.id, :object => 'Package',
:data => package.to_s, :o_id => record.id,
:filename => meta[:name] + '-' + meta[:version] + '.zpm', :data => package.to_s,
:preferences => {}, :filename => meta[:name] + '-' + meta[:version] + '.zpm',
) :preferences => {},
)
end
# write files # write files
package.elements.each('zpm/filelist/file') do |element| package.elements.each('zpm/filelist/file') do |element|
@ -228,6 +232,16 @@ class Package < ApplicationModel
return true return true
end end
# Package.reinstall( package_name )
def self.reinstall(package_name)
package = Package.where( :name => package_name ).first
return if !package
file = self._get_bin( package.name, package.version )
return if !file
self.install( :string => file, :reinstall => true )
end
# Package.uninstall( :name => 'package', :version => '0.1.1' ) # Package.uninstall( :name => 'package', :version => '0.1.1' )
# Package.uninstall( :string => zpm_as_string ) # Package.uninstall( :string => zpm_as_string )
def self.uninstall( data ) def self.uninstall( data )