Class: SchemaEvolutionManager::InstallTemplate
- Inherits:
-
Object
- Object
- SchemaEvolutionManager::InstallTemplate
- Defined in:
- lib/schema-evolution-manager/install_template.rb
Constant Summary collapse
- TEMPLATE =
<<-"EOS" #!/usr/bin/env ruby # # Generated on %%timestamp%% # load File.join(File.dirname(__FILE__), 'lib/schema-evolution-manager.rb') SchemaEvolutionManager::Library.set_verbose(true) lib_dir = '%%lib_dir%%' bin_dir = '%%bin_dir%%' version = SchemaEvolutionManager::Version.read version_name = "schema-evolution-manager-%s" % version.to_version_string version_dir = File.join(lib_dir, version_name) version_bin_dir = File.join(version_dir, 'bin') SchemaEvolutionManager::Library.ensure_dir!(version_dir) SchemaEvolutionManager::Library.ensure_dir!(bin_dir) Dir.chdir(lib_dir) do if File.exist?("schema-evolution-manager") if File.symlink?("schema-evolution-manager") SchemaEvolutionManager::Library.system_or_error("rm schema-evolution-manager") SchemaEvolutionManager::Library.system_or_error("ln -s %s %s" % [version_name, 'schema-evolution-manager']) else puts "*** WARNING: File[%s] already exists. Not creating symlink" % File.join(lib_dir, "schema-evolution-manager") end else SchemaEvolutionManager::Library.system_or_error("ln -s %s %s" % [version_name, 'schema-evolution-manager']) end end ['CONVENTIONS.md', 'LICENSE', 'README.md', 'VERSION', 'install.sh'].each do |filename| SchemaEvolutionManager::Library.system_or_error("cp %s %s" % [filename, version_dir]) end ['bin', 'lib', 'lib/schema-evolution-manager', 'template', 'scripts'].each do |dir| this_dir = File.join(version_dir, dir) SchemaEvolutionManager::Library.ensure_dir!(this_dir) Dir.foreach(dir) do |filename| path = File.join(dir, filename) if File.file?(path) SchemaEvolutionManager::Library.system_or_error("cp %s %s" % [path, this_dir]) if dir == "bin" && filename != "sem-config" SchemaEvolutionManager::Library.system_or_error("chmod +x %s/%s" % [this_dir, filename]) end end end end aliased_bin_dir = File.join(lib_dir, "schema-evolution-manager", "bin") Dir.chdir(bin_dir) do Dir.foreach(aliased_bin_dir) do |filename| path = File.join(aliased_bin_dir, filename) if File.file?(path) SchemaEvolutionManager::Library.system_or_error("rm -f %s && ln -s %s" % [filename, path]) end end end # Overrwrite bin/sem-config with proper location of lib dir init_file = File.join(version_dir, "bin/sem-config") SchemaEvolutionManager::Preconditions.check_state(File.exist?(init_file), "Init file[%s] not found" % init_file) File.open(init_file, "w") do |out| out << "load File.join('%s')\n" % File.join(version_dir, 'lib/schema-evolution-manager.rb') end puts "" puts "schema-evolution-manager %s installed in %s" % [version.to_version_string, version_dir] puts " - lib dir: %s" % lib_dir puts " - bin dir: %s" % bin_dir puts "" found = `which sem-add`.strip if found == "" puts "Recommend adding the bin directory to your path" puts " export PATH=%s:$PATH" % bin_dir puts "" end puts "installation complete" puts "" EOS
Instance Method Summary collapse
-
#generate ⇒ Object
Generates the actual contents of the install file.
-
#initialize(opts = {}) ⇒ InstallTemplate
constructor
A new instance of InstallTemplate.
- #write_to_file(path) ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ InstallTemplate
Returns a new instance of InstallTemplate.
5 6 7 8 9 |
# File 'lib/schema-evolution-manager/install_template.rb', line 5 def initialize(opts={}) @lib_dir = Preconditions.check_not_blank(opts.delete(:lib_dir), "lib_dir is required") @bin_dir = Preconditions.check_not_blank(opts.delete(:bin_dir), "bin_dir is required") Preconditions.assert_empty_opts(opts) end |
Instance Method Details
#generate ⇒ Object
Generates the actual contents of the install file
12 13 14 15 16 17 18 |
# File 'lib/schema-evolution-manager/install_template.rb', line 12 def generate template = Template.new template.add('timestamp', Time.now.to_s) template.add('lib_dir', @lib_dir) template.add('bin_dir', @bin_dir) template.parse(TEMPLATE) end |
#write_to_file(path) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/schema-evolution-manager/install_template.rb', line 20 def write_to_file(path) puts "Writing %s" % path File.open(path, "w") do |out| out << generate end Library.system_or_error("chmod +x %s" % path) end |