perkeep/dev-appengine

65 lines
1.9 KiB
Perl
Executable File

#!/usr/bin/perl
use strict;
use FindBin qw($Bin);
use Getopt::Long;
sub usage {
die "Usage: dev-appengine [--wipe] [-a] [-p port] -- [other_dev_appserver_opts]";
}
my $opt_wipe;
my $opt_port;
my $opt_all; # listen on all interfaces
GetOptions("wipe" => \$opt_wipe,
"all" => \$opt_all,
"p=i" => \$opt_port,
) or usage();
my $sdk = readlink("$Bin/appengine-sdk")
or die "No App Engine SDK symlink; please:\n \$ ln -s /path/to/appengine-go-sdk $Bin/appengine-sdk\n\n";
my @args = (
"$sdk/dev_appserver.py",
"--skip_sdk_update_check",
);
if ($opt_all) {
push @args, "-a", "0.0.0.0";
}
if ($opt_wipe) {
push @args, "--clear_datastore";
}
if ($opt_port) {
push @args, "--port", "$opt_port";
} else {
push @args, "--port", "3179";
}
push @args, @ARGV;
chdir "$Bin/server/appengine" or die "$!";
my $sourceRoot = "$Bin/server/appengine/source_root";
# import in the appengine dir all the static files, so they get uploaded
# TODO(mpl): do a smarter mirroring when we convert this to go
unless (-d $sourceRoot) {
# copy ui files
system("mkdir", "-p", $sourceRoot) and die "Failed to create $sourceRoot.\n";
my $dest = "$sourceRoot/server/camlistored";
system("mkdir", "-p", $dest) and die "Failed to create uiDir.\n";
system("cp", "-a", "$Bin/server/camlistored/ui", $dest) and die "Failed to cp uiDir.\n";
# copy closure files
$dest = "$sourceRoot/third_party/closure/lib";
system("mkdir", "-p", $dest) and die "Failed to create closureDir.\n";
system("cp", "-a", "$Bin/third_party/closure/lib/closure", $dest) and die "Failed to cp uiDir.\n";
# copy favicon.ico
$dest = "$sourceRoot/pkg/server";
system("mkdir", "-p", $dest) and die "Failed to create pkg/server.\n";
system("cp", "$Bin/pkg/server/favicon.ico", $dest) and die "Failed to cp favicon.ico.\n";
}
push @args, ".";
print "\$ @args\n";
exec(@args);