#!/usr/bin/perl use strict; use FindBin; use Getopt::Long; use DBI; sub usage { die "Usage: dev-indexer [--wipe] -- [other_camlistored_opts]"; } my $opt_wipe; GetOptions("wipe" => \$opt_wipe) or usage(); my $port = shift || "3200"; usage() unless $port =~ /^\d+$/; system("./build.pl", "server/go/blobserver") and die "Failed to build.\n"; # NOTE: Root required but not used by indexer blobserver my $root = "/tmp/camliroot/port$port/"; if ($opt_wipe && -d $root) { print "Wiping $root\n"; system("rm", "-rf", $root) and die "Failed to wipe $root.\n"; } unless (-d $root) { system("mkdir", "-p", $root) and die "Failed to create $root.\n"; } my $DBNAME = "devcamlistore"; my $dbh = DBI->connect("DBI:mysql:database=mysql", "root", "root") or die "Failed to connect to MySQL on localhost with user/pass of root/root.\n"; my $camdb = DBI->connect("DBI:mysql:database=$DBNAME", "root", "root", { PrintWarn => 0, PrintError => 0, }); unless ($camdb) { print "Database '$DBNAME' doesn't exist; assuming --wipe and initializing.\n"; $opt_wipe = 1; } if ($opt_wipe) { system("mysqladmin", "-uroot", "-proot", "--force", "drop", "$DBNAME"); system("mysqladmin", "-uroot", "-proot", "create", "$DBNAME") and die "Could not create MySQL database on localhost.\n"; my $dbh = DBI->connect("DBI:mysql:database=$DBNAME", "root", "root", { "RaiseError" => 1, }) or die "Failed to connect to MySQL on localhost.\n"; # Begin schema creation. $dbh->do("CREATE TABLE blobs (". "blobref VARCHAR(100) NOT NULL PRIMARY KEY, ". "size INTEGER NOT NULL, ". "type VARCHAR(100)". ")"); } print "Starting blobserver with indexer on http://localhost:$port/ in $root\n"; $ENV{CAMLI_PASSWORD} = "pass$port"; exec("$FindBin::Bin/server/go/blobserver/camlistored", "-root=$root", # NOTE: Root required but not used by indexer blobserver "-listen=:$port", "-devmysqlindexer", @ARGV);