-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqsub1line
executable file
·87 lines (81 loc) · 3.1 KB
/
qsub1line
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/perl
use warnings;
use strict;
use FindBin;
my $bindir = $FindBin::Bin;
##############################################################################
# Copyright notice: Copyright (c) Richard Yim, 16 Aug 2016, v1.1
# All rights reserved.
#
# Contributors: Richard Yim*
#
# *Department of Cancer Biology
# Cancer Institute
# University College London
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# You are free to use, distribute and/or modify this software as you wish as
# long as the following conditions are met:
# The software must retain this copyright notice.
# Contributors must add their names to the contributors list.
# Neither the name of the copyright holder nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
##############################################################################
#
# INSTALLATION
# Place the files qsub1line and qsub1line in a directory in a writeable
# filesystem.
# Add this directory to your $PATH in your chosen environment config file
# (E.G.: ~/.bashrc).
#
##############################################################################
# Check all files are present
my @dependencies = (
$bindir . "/qsub1line.template"
);
my $missingdependencies = 0;
foreach my $file (@dependencies) {
unless (-e $file) {
print "Fatal error: Missing dependency:\n$file\n";
$missingdependencies = 1;
}
}
exit(1) if $missingdependencies == 1; # Crap out if missing files
# General idiotproofing
if (!$ARGV[0]) {
print "Invalid input. Usage: \"qsub1line <command> [arguments]\"\n";
exit(1);
} elsif ($ARGV[1]) {
print "Put command and its arguments in double quotes: \"\"\n";
exit(1);
}
# Parse in command line
my $command = $ARGV[0];
(my $procname = $command) =~ s/\s.*//; # Set a name for process
print "Process name:\t$procname\nCommand passed:\t$command\n";
# Write qsub script so Legion people are happy
open(IN, $bindir . "/qsub1line.template");
open(OUT, ">$bindir/.qsub1line.temp")
or die "Script not in writeable filesystem.\n";
foreach my $line (<IN>) {
$line =~ s/NAME/$procname/g;
$line =~ s/COMMAND/$command/g;
print OUT $line;
}
close(OUT);
close(IN);
# Run qsub script
system("qsub $bindir/.qsub1line.temp");