Line 0
Link Here
|
0 |
- |
1 |
#!/usr/bin/perl |
|
|
2 |
# koha-shell -- put you in a shell with a koha environment set up |
3 |
# Copyright 2012 Catalyst IT, Ltd |
4 |
# |
5 |
# This program is free software: you can redistribute it and/or modify |
6 |
# it under the terms of the GNU General Public License as published by |
7 |
# the Free Software Foundation, either version 3 of the License, or |
8 |
# (at your option) any later version. |
9 |
# |
10 |
# This program is distributed in the hope that it will be useful, |
11 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 |
# GNU General Public License for more details. |
14 |
# |
15 |
# You should have received a copy of the GNU General Public License |
16 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 |
|
18 |
use Getopt::Long; |
19 |
use Modern::Perl; |
20 |
|
21 |
Getopt::Long::Configure("bundling"); |
22 |
|
23 |
my %opts; |
24 |
my $res = GetOptions( \%opts, "command|c=s", "help|h", "login|l", "shell|s=s", |
25 |
"preserve-environment|p|m", "verbose|v" ); |
26 |
|
27 |
if ( !$res || $opts{help} ) { |
28 |
show_help( !$res ); |
29 |
exit( !$res ); |
30 |
} |
31 |
|
32 |
if ( !@ARGV ) { |
33 |
show_help( 1, "An instance name must be supplied." ); |
34 |
exit(1); |
35 |
} |
36 |
my $instance = shift @ARGV; |
37 |
if ( !-e "/etc/koha/sites/$instance" ) { |
38 |
show_help( 1, "The instance doesn't exist: $instance" ); |
39 |
exit(1); |
40 |
} |
41 |
my $shell = $opts{shell} || $ENV{SHELL} || '/bin/sh'; |
42 |
|
43 |
# Now we're set up, build the 'su' command |
44 |
my @su_args; |
45 |
push @su_args, '/bin/su'; |
46 |
push @su_args, '--preserve-environment' if $opts{'preserve-environment'}; |
47 |
push @su_args, '--login' if $opts{login}; |
48 |
push @su_args, '--command', |
49 |
"env " |
50 |
. "KOHA_CONF=/etc/koha/sites/$instance/koha-conf.xml " |
51 |
. "PERL5LIB=/usr/share/koha/lib $shell" |
52 |
. ( $opts{command} ? " -c '$opts{command}'" : '' ); |
53 |
push @su_args, "$instance-koha"; |
54 |
|
55 |
print "Command: '".join("' '",@su_args)."'\n" if $opts{verbose}; |
56 |
system(@su_args); |
57 |
if ( $? == -1 ) { |
58 |
print STDERR "failed to execute: $!\n"; |
59 |
} |
60 |
elsif ( $? & 127 ) { |
61 |
printf STDERR "child died with signal %d, %s coredump\n", |
62 |
( $? & 127 ), ( $? & 128 ) ? 'with' : 'without'; |
63 |
} |
64 |
|
65 |
sub show_help { |
66 |
my ( $err, $msg ) = @_; |
67 |
|
68 |
my $fh = $err ? *STDERR : *STDOUT; |
69 |
say $fh "Error: " . $msg if $msg; |
70 |
print $fh $_ while <DATA>; |
71 |
} |
72 |
|
73 |
__DATA__ |
74 |
koha-shell -- gives you a shell with your Koha environment set up |
75 |
|
76 |
Usage: koha-shell [options] [instance name] |
77 |
|
78 |
Options: |
79 |
-c, --command COMMAND pass COMMAND to the invoked shell |
80 |
-h, --help show this help and quit |
81 |
-l, --login make the shell a login shell |
82 |
-m, -p, |
83 |
--preserve-environment do not reset environment variables |
84 |
-s, --shell SHELL use SHELL instead of the one from your environment |
85 |
-v, --verbose output the full command that will be executed |
86 |
|
87 |
The default shell is the one currently in use. Refer to su(1) for more detail |
88 |
on these options. |