diff --git a/install.rb b/install.rb
index c99d7da..b0803a5 100755
--- a/install.rb
+++ b/install.rb
@@ -92,9 +92,11 @@ def do_libs(libs, strip = 'lib/')
libs.each do |lf|
olf = File.join(InstallOptions.site_dir, lf.gsub(/#{strip}/, ''))
op = File.dirname(olf)
- File.makedirs(op, true)
- File.chmod(0755, op)
- File.install(lf, olf, 0755, true)
+ if File.exists?(op)
+ File.makedirs(op, true)
+ File.chmod(0755, op)
+ end
+ install_libfile(lf, olf)
end
end
@@ -200,6 +202,12 @@ def prepare_installation
opts.on('--mandir[=OPTIONAL]', 'Installation directory for man pages', 'overrides Config::CONFIG["mandir"]') do |mandir|
InstallOptions.mandir = mandir
end
+ opts.on('--confdir[=OPTIONAL]', 'Configuration directory', 'Default to /etc/puppet') do |confdir|
+ InstallOptions.confdir = confdir
+ end
+ opts.on('--vardir[=OPTIONAL]', 'Data directory', 'Default to /var/puppet') do |vardir|
+ InstallOptions.vardir = vardir
+ end
opts.on('--quick', 'Performs a quick installation. Only the', 'installation is done.') do |quick|
InstallOptions.rdoc = false
InstallOptions.ri = false
@@ -245,7 +253,19 @@ def prepare_installation
else
sbindir = Config::CONFIG['sbindir']
end
-
+
+ if not InstallOptions.vardir.nil?
+ vardir = InstallOptions.vardir
+ else
+ vardir = '/var/puppet'
+ end
+
+ if not InstallOptions.confdir.nil?
+ confdir = InstallOptions.confdir
+ else
+ confdir = '/etc/puppet'
+ end
+
if not InstallOptions.sitelibdir.nil?
sitelibdir = InstallOptions.sitelibdir
else
@@ -296,6 +316,8 @@ def prepare_installation
InstallOptions.site_dir = sitelibdir
InstallOptions.bin_dir = bindir
InstallOptions.sbin_dir = sbindir
+ InstallOptions.var_dir = vardir
+ InstallOptions.conf_dir = confdir
InstallOptions.lib_dir = libdir
InstallOptions.man_dir = mandir
end
@@ -434,6 +456,34 @@ def install_binfile(from, op_file, target)
File.unlink(tmp_file)
end
+##
+# Install file(s) from ./lib to InstallOptions.site_dir.
+def install_libfile(from, op_file)
+ tmp_dir = nil
+ InstallOptions.tmp_dirs.each do |t|
+ if File.directory?(t) and File.writable?(t)
+ tmp_dir = t
+ break
+ end
+ end
+
+ fail "Cannot find a temporary directory" unless tmp_dir
+ tmp_file = File.join(tmp_dir, '_tmp')
+
+ File.open(from) do |ip|
+ File.open(tmp_file, "w") do |op|
+ contents = ip.readlines
+ contents = contents.join()
+ contents = contents.gsub(/\/var\/puppet/, InstallOptions.var_dir)
+ contents = contents.gsub(/\/etc\/puppet/, InstallOptions.conf_dir)
+ op.write
+ end
+ end
+ FileUtils.install(tmp_file, File.join(InstallOptions.site_dir, op_file), :mode => 0644, :verbose => true)
+ File.unlink(tmp_file)
+end
+
+
CMD_WRAPPER = <<-EOS
@echo off
if "%OS%"=="Windows_NT" goto WinNT