Added feature to easier link/unlink extentions in developer environment:
Package.link('/path/to/src/extention') # link files + execute migration up Package.unlink('/path/to/src/extention') # execute migration down + unlink files
This commit is contained in:
parent
5dfd1c5a7c
commit
7f2959ef50
1 changed files with 86 additions and 0 deletions
|
@ -50,6 +50,92 @@ class Package < ApplicationModel
|
||||||
return data
|
return data
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.unlink_all
|
||||||
|
# link files
|
||||||
|
Dir.glob( @@root + '/**/*' ) do |entry|
|
||||||
|
if File.symlink?( entry)
|
||||||
|
puts "unlink: #{entry}"
|
||||||
|
File.delete( entry )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# check if zpm is a package source repo
|
||||||
|
def self._package_base_dir?(package_base_dir)
|
||||||
|
package = false
|
||||||
|
Dir.glob( package_base_dir + '/*.szpm') do |entry|
|
||||||
|
package = entry.sub( /^.*\/(.+?)\.szpm$/, '\1')
|
||||||
|
end
|
||||||
|
if package == false
|
||||||
|
raise "Can't link package, '#{package_base_dir}' is no package source directory!"
|
||||||
|
end
|
||||||
|
puts package.inspect
|
||||||
|
return package
|
||||||
|
end
|
||||||
|
|
||||||
|
# Package.unlink('/path/to/src/extention')
|
||||||
|
# execute migration down + unlink files
|
||||||
|
def self.unlink(package_base_dir)
|
||||||
|
|
||||||
|
# check if zpm is a package source repo
|
||||||
|
package = self._package_base_dir?(package_base_dir)
|
||||||
|
|
||||||
|
# migration down
|
||||||
|
Package::Migration.migrate( package, 'reverse' )
|
||||||
|
|
||||||
|
# link files
|
||||||
|
Dir.glob( package_base_dir + '/**/*' ) do |entry|
|
||||||
|
entry = entry.sub( '//', '/' )
|
||||||
|
file = entry
|
||||||
|
file = file.sub( /#{package_base_dir.to_s}/, '' )
|
||||||
|
dest = @@root + '/' + file
|
||||||
|
|
||||||
|
if File.symlink?( dest.to_s )
|
||||||
|
puts "Unlink file: #{dest.to_s}"
|
||||||
|
File.delete( dest.to_s )
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Package.link('/path/to/src/extention')
|
||||||
|
# link files + execute migration up
|
||||||
|
def self.link(package_base_dir)
|
||||||
|
|
||||||
|
# check if zpm is a package source repo
|
||||||
|
package = self._package_base_dir?(package_base_dir)
|
||||||
|
|
||||||
|
# link files
|
||||||
|
Dir.glob( package_base_dir + '/**/*' ) do |entry|
|
||||||
|
entry = entry.sub( '//', '/' )
|
||||||
|
file = entry
|
||||||
|
file = file.sub( /#{package_base_dir.to_s}/, '' )
|
||||||
|
dest = @@root + '/' + file
|
||||||
|
|
||||||
|
if File.directory?( entry.to_s )
|
||||||
|
if !File.exists?( dest.to_s )
|
||||||
|
puts "Create dir: #{dest.to_s}"
|
||||||
|
FileUtils.mkdir_p( dest.to_s )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if File.file?( entry.to_s ) && ( File.file?( dest.to_s ) && !File.symlink?( dest.to_s ) )
|
||||||
|
raise "Can't link #{entry.to_s} -> #{dest.to_s}, destination already exists!"
|
||||||
|
end
|
||||||
|
|
||||||
|
if File.file?( entry )
|
||||||
|
if File.symlink?( dest.to_s )
|
||||||
|
File.delete( dest.to_s )
|
||||||
|
end
|
||||||
|
puts "Link file: #{entry.to_s} -> #{dest.to_s}"
|
||||||
|
File.symlink( entry.to_s, dest.to_s )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# migration up
|
||||||
|
Package::Migration.migrate( package )
|
||||||
|
end
|
||||||
|
|
||||||
def self.install(data)
|
def self.install(data)
|
||||||
if data[:file]
|
if data[:file]
|
||||||
xml = self._read_file( data[:file], true )
|
xml = self._read_file( data[:file], true )
|
||||||
|
|
Loading…
Reference in a new issue