added Installable aspect and a script to install classes

This commit is contained in:
Doug Bell 2008-11-03 18:07:54 +00:00
parent c70acedd1b
commit a8247aa1c5
2 changed files with 343 additions and 0 deletions

128
sbin/installClass.pl Normal file
View file

@ -0,0 +1,128 @@
use lib "../lib";
use strict;
use Getopt::Long;
use Pod::Usage;
use WebGUI::Pluggable;
use WebGUI::Session;
$|++;
# Get options
my ( $configFile, $remove, $check, $upgrade, $help, $man );
GetOptions(
'configFile=s' => \$configFile,
'remove' => \$remove,
'check' => \$check,
'upgrade' => \$upgrade,
'help' => \$help,
'man' => \$man,
);
# Get arguments
my $class = $ARGV[0];
pod2usage( -verbose => 1 )
if $help;
pod2usage( -verbose => 2 )
if $man;
pod2usage( "$0: Must specify a configFile" )
if !$configFile;
die "Config file '$configFile' does not exist!\n"
if !-f '../etc/' . $configFile;
# Open the session
my $session = WebGUI::Session->open("..",$configFile);
$session->user({ userId => 3 });
# Install or uninstall the asset
WebGUI::Pluggable::load( $class );
if ( $check ) {
if ( $class->isInstalled( $session ) ) {
print "$class is installed!\n";
}
else {
print "$class is NOT installed!\n";
}
}
elsif ( $remove ) {
print "Removing $class... ";
if ( !$class->isInstalled( $session ) ) {
die "Can't remove $class because: Not installed\n";
}
$class->uninstall( $session );
print "DONE!\n";
print "Please restart Apache.\n";
}
elsif ( $upgrade || $class->isInstalled( $session ) ) {
print "Upgrading $class... ";
$class->upgrade( $session );
print "DONE!\n";
print "Please restart Apache.\n";
}
else {
print "Installing $class... ";
$class->install( $session );
print "DONE!\n";
print "Please restart Apache.\n";
}
# End the session
$session->var->end;
$session->close;
__END__
=head1 NAME
installClass.pl -- Run class install methods
=head1 SYNOPSIS
installAsset.pl [--remove|--check|--upgrade] <class> --configFile=<configFile>
=head1 DESCRIPTION
This helper script installs a class that is using the correct interface.
If your class has not told you to use this script, then it probably won't work!
=head1 ARGUMENTS
=over 4
=item class
The class name of the class to install. Something like WebGUI::Asset::Yourasset
=back
=head1 OPTIONS
=over 4
=item check
If specified, will check if the class is installed or not.
=item upgrade
If specified, will upgrade the class.
=item remove
If specified, will uninstall the class.
=item configFile
The configuration file for the site to install the class into
=back
=head1 SEE ALSO
WebGUI::AssetAspect::Installable