bin/kafofy in kafo-0.3.17 vs bin/kafofy in kafo-0.4.0
- old
+ new
@@ -1,9 +1,36 @@
#!/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[:answer_file] = './config/answers.yaml'
+ opts.on("-a", "--answer_file FILE", "location of the answer file") do |answer_file|
+ options[:answer_file] = answer_file
+ end
+ opts.on("-c", "--config_file FILE", "location of the configuration file") do |config_file|
+ options[:config_file] = config_file
+ end
+ opts.on("-n", "--name NAME", "installer name") do |name|
+ options[:name] = name
+ end
+end.parse!
+
+config = Kafo::Configuration::DEFAULT
+options[:answer_file] ||= config[:answer_file]
+options[:name] ||= "kafo-configure"
+options[:config_file] ||= "./config/#{options[:name]}.yaml"
+
# Create directory structure
%w(bin config modules).each do |dir|
FileUtils.mkdir_p dir
end
@@ -11,29 +38,38 @@
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
-script_name = "kafo-configure"
-# Optional configure script
-if ARGV.size > 0
- name = ARGV[0]
- script_name = "bin/#{name}"
- puts "... creating #{script_name}"
- content = <<EOS
+# Create default config file
+puts "using #{options[:config_file]} as default config file"
+if !File.exists?(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[:name]}/' #{options[:config_file]}`
+ end
+end
+
+# Installer script
+script_name = "bin/#{options[:name]}"
+puts "... creating #{script_name}"
+content = <<EOS
#!/usr/bin/env ruby
require 'rubygems'
+CONFIG_FILE = '#{options[:config_file]}'
require 'kafo'
-CONFIG_FILE = "/etc/#{name}/#{name}.yaml"
result = Kafo::KafoConfigure.run
exit result.nil? ? 0 : result.exit_code
EOS
- File.open(script_name, 'w') { |file| file.write(content) }
- FileUtils.chmod 0755, script_name
-end
+File.open(script_name, 'w') { |file| file.write(content) }
+FileUtils.chmod 0755, script_name
puts "Your directory was kafofied"
puts "Now you should:"
puts " 1. upload your puppet modules to modules directory (you can use librarian-puppet project)"
-puts " 2. create default config/answers.yaml or modify config/kafo.yaml to load another answer file"
-puts " 3. run #{script_name}"
+puts " 2. create default #{options[:answer_file]} or modify #{options[:config_file]} to load another answer file"
+puts " 3. run #{script_name} to install your modules"