[Bio] / FigCommon / build_cgi.pl Repository:
ViewVC logotype

View of /FigCommon/build_cgi.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (download) (as text) (annotate)
Mon Dec 5 19:10:06 2005 UTC (13 years, 11 months ago) by olson
Branch: MAIN
CVS Tags: mgrast_dev_08112011, rast_rel_2009_05_18, mgrast_dev_08022011, rast_rel_2014_0912, rast_rel_2008_06_18, rast_rel_2008_06_16, mgrast_dev_05262011, rast_rel_2008_12_18, mgrast_dev_04082011, rast_rel_2008_07_21, rast_rel_2010_0928, rast_2008_0924, mgrast_version_3_2, mgrast_dev_12152011, rast_rel_2008_04_23, help, mgrast_dev_06072011, rast_rel_2008_09_30, rast_rel_2009_0925, rast_rel_2010_0526, rast_rel_2014_0729, mgrast_dev_02212011, rast_rel_2010_1206, caBIG-05Apr06-00, mgrast_release_3_0, mgrast_dev_03252011, rast_rel_2010_0118, mgrast_rel_2008_0924, mgrast_rel_2008_1110_v2, rast_rel_2009_02_05, rast_rel_2011_0119, mgrast_rel_2008_0625, mgrast_release_3_0_4, mgrast_release_3_0_2, mgrast_release_3_0_3, mgrast_release_3_0_1, mgrast_dev_03312011, mgrast_release_3_1_2, mgrast_release_3_1_1, mgrast_release_3_1_0, mgrast_dev_04132011, rast_rel_2008_10_09, mgrast_dev_04012011, rast_release_2008_09_29, mgrast_rel_2008_0806, mgrast_rel_2008_0923, mgrast_rel_2008_0919, rast_rel_2009_07_09, rast_rel_2010_0827, mgrast_rel_2008_1110, myrast_33, rast_rel_2011_0928, rast_rel_2008_09_29, mgrast_rel_2008_0917, rast_rel_2008_10_29, mgrast_dev_04052011, mgrast_dev_02222011, caBIG-13Feb06-00, rast_rel_2009_03_26, mgrast_dev_10262011, rast_rel_2008_11_24, rast_rel_2008_08_07, HEAD
Changes since 1.2: +17 -0 lines
Added license words.

#
# Copyright (c) 2003-2006 University of Chicago and Fellowship
# for Interpretations of Genomes. All Rights Reserved.
#
# This file is part of the SEED Toolkit.
# 
# The SEED Toolkit is free software. You can redistribute
# it and/or modify it under the terms of the SEED Toolkit
# Public License. 
#
# You should have received a copy of the SEED Toolkit Public License
# along with this program; if not write to the University of Chicago
# at info@ci.uchicago.edu or the Fellowship for Interpretation of
# Genomes at veronika@thefig.info or download a copy from
# http://www.theseed.org/LICENSE.TXT.
#


use File::Copy;
use File::Spec;

#
# build_cgi source-script destination-script
#
# Build a CGI script from a source file.
#
# We write the tool_hdr, add a test for system up / down (if the
# cgi script isn't named seed_ctl*), and then add the source file.
#
# Leverage the existing tool_hdr / tool_hdr_py mechanisms.
#

if (@ARGV != 2)
{
    die "Usage: $0 source-script destination-script\n";
}

my($src_script, $dest_script) = @ARGV;

if (! -f $src_script)
{
    die "Source script $src_script does not exist\n";
}

#
# Check if this is a perl or python script, setting $tool_hdr
# to the appropriate tool header generation script.
#
# Also check to see if the script is called seed_ctlsomethign().
# If it is not, set $ctl_test to the function that will generate
# the appropriate code for testing to see if the seed is up or down.
#

my $tool_hdr;
#
# default: do nothing
#
my $ctl_test = sub { return ""; };

#
# Assume a .cgi is really a perl script; bw compatibility.
#

my(undef, $src_path, $src_file) = File::Spec->splitpath($src_script);

if ($src_script =~ /\.(cgi|pl)$/)
{
    $tool_hdr = "$FIG_Config::bin/tool_hdr";
    if ($src_file !~ /^seed_ctl/)
    {
	$ctl_test = \&ctl_test_pl;
    }
}
elsif  ($src_script =~ /\.py$/)
{
    $tool_hdr = "$FIG_Config::bin/tool_hdr_py";
    if ($src_file !~ /^seed_ctl/)
    {
	$ctl_test = \&ctl_test_py;
    }
}
else
{
    die "Source script must end in either .pl or .py.\n";
}

#
# Copy the tool header.
#

my $inp_fh;

open($inp_fh, "$tool_hdr |") or die "Cannot run $tool_hdr: $!\n";

my $dest_fh;

open($dest_fh, ">$dest_script") or die "Cannot open $dest_script for writing: $!\n";


copy($inp_fh, $dest_fh);
close($inp_fh);

#
# Write the ctl_test.
#

my $ctl_code = &$ctl_test();
syswrite($dest_fh, $ctl_code);

#
# Copy the input script.
#

open($inp_fh, "<$src_script") or die "Cannot open $src_script for reading: $!\n";

copy($inp_fh, $dest_fh);
close($inp_fh);

#
# All done. Close the destination, and make executable.
#

close($dest_fh) or die "Close of $dest_script failed: $!\n";

chmod(0775, $dest_script) or die "Chmod of $dest_script failed: $!\n";

#
# write the is-the-seed-up code for perl.
#
sub ctl_test_pl
{
    return <<'EOC';
#
# Perl code to determine if seed is running.
#

use CGI;

if (-f "$FIG_Config::data/Global/why_down")
{
    local $/;
    open my $fh, "<$FIG_Config::data/Global/why_down";
    my $down_msg = <$fh>;
    
    print CGI::header();
    print CGI::head(CGI::title("SEED Server down"));
    print CGI::start_body();
    print CGI::h1("SEED Server down");
    print CGI::p("The seed server is not currently running:");
    print CGI::pre($down_msg);
    print CGI::end_body();
    exit;
}
EOC
}

#
# write the is-the-seed-up code for python.
#
sub ctl_test_py
{
    return <<EOC;
#
# Python code to determine if seed is running.
#
EOC
}


MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3