-
Notifications
You must be signed in to change notification settings - Fork 36
/
cgi_install.PLS
66 lines (52 loc) · 1.75 KB
/
cgi_install.PLS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!perl
use Config;
use File::Basename qw(&basename &dirname);
use Cwd;
$origdir = cwd;
chdir dirname($0);
$file = basename($0, '.PL','.PLS');
$file .= $^O eq 'VMS' ? '.com' : '.pl';
open OUT,">$file" or die "Can't create $file: $!";
print "Extracting $file (with variable substitutions)\n";
print OUT "$Config{startperl}\n";
print OUT <<'!NO!SUBS!';
use strict;
use File::Copy;
use Bio::Root::IO;
use File::Path 'mkpath';
use Cwd;
use FindBin '$Bin';
my $origdir = cwd;
my $homedir = "$Bin/..";
chdir $homedir or die "couldn't cd to $homedir: $!\n";
foreach (@ARGV) {
$_ =~ s/^\'(.*)\'$/$1/;
}
my %options = map {split /=/} @ARGV;
my $cgi_target = $options{CGIBIN};
print "Installing gbrowse CGI scripts...\n";
if (! (-e $cgi_target) ) {
mkpath($cgi_target,0,0777) or die "unable to create $cgi_target directory\n";
}
my $cgidir = "cgi-bin";
chdir $cgidir;
foreach (glob('*')) {
next if /README/;
next if /CVS/;
next if /^[.\#]/;
next if /~$/;
next if /\.PLS$/;
next unless (-f $_);
my $installfile = Bio::Root::IO->catfile($cgi_target, $_);
warn "copying $_ to $installfile\n";
copy($_, $installfile ) or die "unable to copy to $installfile\n";
my $mode = 0755;
chmod $mode, $installfile
or die "unable to make $installfile world executable\n";
}
chdir $origdir or die "couldn't cd to $origdir: $!\n";
!NO!SUBS!
close OUT or die "Can't close $file: $!";
chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':';
chdir $origdir;