Files
swg-main/tools/startServer.pl
2018-01-20 13:55:01 -06:00

84 lines
2.5 KiB
Perl
Executable File

#! /usr/bin/perl
# ======================================================================
# ======================================================================
use strict;
use warnings;
# ======================================================================
# Globals
# ======================================================================
my $scriptName = $0;
$scriptName =~ s/^(.*)[\\\/]//;
# ======================================================================
# Subroutines
# ======================================================================
sub usage()
{
die "\nUsage:\n\t$scriptName current [ debug | release ] (default is debug)\n";
}
sub perforceWhere
{
local $_;
# find out where a perforce file resides on the local machine
my $result;
{
open(P4, "p4 where $_[0] |");
$_ = <P4>;
chomp;
my @where = split;
$result = $where[2];
close(P4);
}
return $result;
}
# ======================================================================
# Main
# ======================================================================
usage() if(@ARGV == 0 || (@ARGV >= 2 && $ARGV[1] ne "debug" && $ARGV[1] ne "release"));
my $branch = shift;
my $serverType = (@ARGV) ? shift : "debug";
# Update database
{
chdir(perforceWhere("//depot/swg/$branch/src/game/server/database/build/linux")) or die "Cannot change directory to database directory\n";
my $update_complete = 1;
my $dbUser = $ENV{"USER"};
$dbUser .= "_$branch" if($branch ne "current");
system("perl database_update.pl --delta --username=$dbUser > startServer.log") == 0 or die "database_update failed\n";
open(DBLOG, "startServer.log");
while(<DBLOG>)
{
$update_complete = 0 if(/ERROR/);
}
close(DBLOG);
die "Error while updating database - detailed info in startServer.log\n" if(!$update_complete);
unlink("startServer.log");
}
chdir(perforceWhere("//depot/swg/$branch/bootleg/linux")) || die "Cannot chdir to ".perforceWhere("//depot/swg/$branch/bootleg/linux")."\n";
# Extract new server exes if they exist
if(-e "servers_${serverType}.tar.gz")
{
print STDERR "Extracting new server exes...\n";
system("tar -xzf servers_${serverType}.tar.gz") == 0 || die "error extracting from $serverType server gzip\n";
system("rm -f servers_${serverType}.tar.gz") == 0 || die "error removing servers_${serverType}.gzip\n";
}
# Start up the server
system("$serverType/LoginServer -- \@loginServer.cfg &") == 0 || die "error starting LoginServer\n";
system("$serverType/TaskManager -- \@taskmanager.cfg &") == 0 || die "error starting TaskManager\n";