Class: SchemaEvolutionManager::InstallTemplate
- Inherits:
-
Object
- Object
- SchemaEvolutionManager::InstallTemplate
- Defined in:
- lib/schema-evolution-manager/install_template.rb
Constant Summary collapse
- TEMPLATE =
"#!/usr/bin/env ruby\n#\n# Generated on %%timestamp%%\n#\n\nload File.join(File.dirname(__FILE__), 'lib/schema-evolution-manager.rb')\nSchemaEvolutionManager::Library.set_verbose(true)\n\nlib_dir = '%%lib_dir%%'\nbin_dir = '%%bin_dir%%'\nversion = SchemaEvolutionManager::Version.read\n\nversion_name = \"schema-evolution-manager-%s\" % version.to_version_string\nversion_dir = File.join(lib_dir, version_name)\nversion_bin_dir = File.join(version_dir, 'bin')\n\nSchemaEvolutionManager::Library.ensure_dir!(version_dir)\nSchemaEvolutionManager::Library.ensure_dir!(bin_dir)\n\nDir.chdir(lib_dir) do\n if File.exist?(\"schema-evolution-manager\")\n if File.symlink?(\"schema-evolution-manager\")\n SchemaEvolutionManager::Library.system_or_error(\"rm schema-evolution-manager\")\n SchemaEvolutionManager::Library.system_or_error(\"ln -s %s %s\" % [version_name, 'schema-evolution-manager'])\n else\n puts \"*** WARNING: File[%s] already exists. Not creating symlink\" % File.join(lib_dir, \"schema-evolution-manager\")\n end\n else\n SchemaEvolutionManager::Library.system_or_error(\"ln -s %s %s\" % [version_name, 'schema-evolution-manager'])\n end\nend\n\n['CONVENTIONS.md', 'LICENSE', 'README.md', 'VERSION', 'install.sh'].each do |filename|\n SchemaEvolutionManager::Library.system_or_error(\"cp %s %s\" % [filename, version_dir])\nend\n\n['bin', 'lib', 'lib/schema-evolution-manager', 'template', 'scripts'].each do |dir|\n this_dir = File.join(version_dir, dir)\n SchemaEvolutionManager::Library.ensure_dir!(this_dir)\n Dir.foreach(dir) do |filename|\n path = File.join(dir, filename)\n if File.file?(path)\n SchemaEvolutionManager::Library.system_or_error(\"cp %s %s\" % [path, this_dir])\n if dir == \"bin\" && filename != \"sem-config\"\n SchemaEvolutionManager::Library.system_or_error(\"chmod +x %s/%s\" % [this_dir, filename])\n end\n end\n end\nend\n\naliased_bin_dir = File.join(lib_dir, \"schema-evolution-manager\", \"bin\")\nDir.chdir(bin_dir) do\n Dir.foreach(aliased_bin_dir) do |filename|\n path = File.join(aliased_bin_dir, filename)\n if File.file?(path)\n SchemaEvolutionManager::Library.system_or_error(\"rm -f %s && ln -s %s\" % [filename, path])\n end\n end\nend\n\n# Overrwrite bin/sem-config with proper location of lib dir\ninit_file = File.join(version_dir, \"bin/sem-config\")\nSchemaEvolutionManager::Preconditions.check_state(File.exist?(init_file), \"Init file[%s] not found\" % init_file)\nFile.open(init_file, \"w\") do |out|\n out << \"load File.join('%s')\\n\" % File.join(version_dir, 'lib/schema-evolution-manager.rb')\nend\n\nputs \"\"\nputs \"schema-evolution-manager %s installed in %s\" % [version.to_version_string, version_dir]\nputs \" - lib dir: %s\" % lib_dir\nputs \" - bin dir: %s\" % bin_dir\nputs \"\"\n\nfound = `which sem-add`.strip\nif found == \"\"\n puts \"Recommend adding the bin directory to your path\"\n puts \" export PATH=%s:$PATH\" % bin_dir\n puts \"\"\nend\n\nputs \"installation complete\"\nputs \"\"\n\n"
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 |