#!/usr/bin/env ruby $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib')) require 'fileutils' require 'optparse' require 'yaml' require 'kafo/configuration' # Option Parsing options = {} OptionParser.new do |opts| opts.banner = "Usage: kafofy" options[:config_dir] = './config/installer-scenarios.d/' opts.on("-c", "--config_dir DIR", "location of the scenarios configuration directory [./config/installer-scenarios.d/]") do |config_dir| options[:config_dir] = config_dir end opts.on("-s", "--scenario SCENARIO", "scenario file name (without extension) [default]") do |scenario| options[:scenario] = scenario end opts.on("-a", "--answer_file ANSWERS", "answer file file name (without extension) [default-answers]") do |answer_file| options[:answer_file] = File.join(options[:config_dir], answer_file + '.yaml') end opts.on("-n", "--name NAME", "installer name [kafo-configure]") do |name| options[:name] = name end end.parse! config = Kafo::Configuration::DEFAULT options[:scenario] ||= 'default' options[:answer_file] ||= File.join(options[:config_dir], options[:scenario] + '-answers.yaml') options[:name] ||= "kafo-configure" options[:config_file] ||= File.join(options[:config_dir], options[:scenario] + '.yaml') # Create directory structure dirs = %w(bin config modules hooks) << options[:config_dir] dirs.each do |dir| FileUtils.mkdir_p dir end # Copy config files src = File.expand_path(File.join(File.dirname(__FILE__), '..')) %w(config_header.txt kafo.yaml.example).each do |file| FileUtils.cp src + "/config/#{file}", 'config/' end # Create default config file puts "creating #{options[:config_file]} as a default scenario file" if !File.exist?(options[:config_file]) puts "... creating config file #{options[:config_file]}" FileUtils.touch options[:config_file] File.chmod 0600, options[:config_file] FileUtils.cp('config/kafo.yaml.example', options[:config_file]) if options[:answer_file] `sed -i 's/^# :answer_file.*$/:answer_file: #{options[:answer_file].gsub('/', '\/')}/' #{options[:config_file]}` `sed -i 's/^# :name.*$/:name: #{options[:scenario]}/' #{options[:config_file]}` end end # Installer script script_name = "bin/#{options[:name]}" puts "... creating #{script_name}" if !File.exist?(script_name) content = <