here's a script i've used to perform a completely automated installation, from building the
TWikiKernel from
SVN, including packaging all conformant plugins, addons, and contrib modules; mirrors cpan modules used by twiki and plugins; to an actual unattended, automated installation. ( if you have your ssh keys setup properly, that is, otherwise you'll need to type the password in (twice)

)
#!/usr/bin/perl -w
use strict;
use Data::Dumper qw( Dumper );
use Cwd qw( getcwd );
use File::Copy qw( cp );
my $platform = qw( darwin sourceforge )[0];
# BUILD OPTIONS
my $twikiplugins = '/Users/wbniv/twiki/twikiplugins';
# INSTALL OPTIONS
my $account = 'twiki';
my $host = 'localhost';
my $dir = '~/Sites';
my $twiki_config = extensions2uri({
contrib => [ qw( DistributionContrib ) ], # AttrsContrib DBCacheContrib DistributionContrib JSCalendarContrib TWikiShellContrib
plugin => [ qw( PerlDocPlugin
FindElsewherePlugin InterwikiPlugin SpreadSheetPlugin TablePlugin TocPlugin
SpacedWikiWordPlugin ChartPlugin SvgPlugin
TWikiReleaseTrackerPlugin
) ],
# ActionTrackerPlugin BeautifierPlugin CalendarPlugin CommentPlugin FindElsewherePlugin InterwikiPlugin
# SpacedWikiWordPlugin SpreadSheetPlugin TWikiReleaseTrackerPlugin TablePlugin TocPlugin
addon => [ qw( GetAWebAddOn ) ], # GetAWebAddOn PluginBenchmarkAddOn
});
################################################################################
# BUILD
my $dirInstaller = "${twikiplugins}/lib/TWiki/Contrib/TWikiInstallerContrib";
chomp( my $newDistro = (`perl ./build-twiki-kernel.pl`)[-1] );
die "no TWikiKernel built?: [$newDistro]" unless $newDistro =~ /TWikiKernel-[^-]+-\d{8}.\d{6}.tar.gz/;
cp( $newDistro, "${dirInstaller}/downloads/releases/" ) or die $!;
chdir "${dirInstaller}" or die $!;
unlink "twiki-${platform}.tar.bz2";
#system qq{make platform=\U$platform\E distro};
system qq{make platform=\U$platform\E twiki-${platform}.tar.bz2};
################################################################################
# (PUSH) INSTALL (TO REMOTE SITE)
system qq{scp twiki-${platform}.tar.bz2 ${account}\@${host}:${dir}};
system qq{ssh ${account}\@${host} "cd ${dir}; tar xjf twiki-${platform}.tar.bz2; time ./pre-twiki.sh; time curl 'http://${host}/~${account}/cgi-bin/install_twiki.cgi?${twiki_config};twiki=${newDistro};install=install' -o 'TWikiInstallationReport.html'; ./post-twiki.pl"};
################################################################################
################################################################################
sub extensions2uri
{
my $config = shift or die;
my @config;
foreach my $ext ( keys %$config )
{
push @config, join( ';', map { "${ext}=$_" } @{$config->{$ext}} );
}
return join( ';', @config );
}
this is obviously too hardcoded for my setup, but i wanted to give a heads up on how this is proceeding.
--
WillNorris - 12 Nov 2004
this is actually half an
AutomatedBuild and half an
AutomatedInstall; i'll update the docs tomorrow when i'm less sleepy
--
WillNorris - 12 Nov 2004