@@ -, +, @@
environment
---
debian/docs/koha-shell.xml | 112 ++++++++++++++++++++++++++++++++++++++++++++
debian/koha-common.install | 1 +
debian/scripts/koha-shell | 88 ++++++++++++++++++++++++++++++++++
3 files changed, 201 insertions(+)
create mode 100644 debian/docs/koha-shell.xml
create mode 100755 debian/scripts/koha-shell
--- a/debian/docs/koha-shell.xml
+++ a/debian/docs/koha-shell.xml
@@ -0,0 +1,112 @@
+
+ koha-shell
+
+ Koha is the first free software library automation package.
+
+
+ Robin
+ Sheat
+
+
+ Catalyst IT
+ http://www.catalyst.net.nz
+
+ Author
+
+
+
+
+
+
+ koha-shell
+ 8
+
+
+
+ koha-shell
+ Gives you a shell with the user and environment set to make it easy to do koha operations.
+ UNIX/Linux
+
+
+
+
+ koha-shell
+ COMMAND
+
+
+
+ SHELL
+
+ instancename
+
+
+
+ Options
+
+
+
+
+ Run the specified command rather than launching a shell.
+
+
+
+
+
+ Show a usage synopsis.
+
+
+
+
+
+ Make the shell a login shell.
+
+
+
+
+
+ Preserve the current environment (note that if you run it through 'sudo', this may not work as you'd expect.)
+
+
+
+
+
+ Run the specified shell. The default is the shell of the current environment, followed by /bin/sh.
+
+
+
+
+
+ Show the command that is going to be run.
+
+
+
+
+
+ Description
+ This launches a shell with the user and required environment variables set in such a way that running any Koha commands will
+ work correctly. With the use of '-c', it can be used to easily run commands in the correct environment.
+ It behaves mostly as a wrapper for su(1), so a deeper discussion of the options can be found in there.
+
+
+
+ Examples
+
+ To get a shell:
+
+ $ sudo koha-shell library
+
+ To run a command:
+
+ $ sudo koha-shell -c "/usr/share/koha/bin/migration_tools/bulkmarcimport.pl -b -file data.marc" library
+
+
+ See also
+
+ koha-foreach(8)
+ su(1)
+
+
+
+
+
+
--- a/debian/koha-common.install
+++ a/debian/koha-common.install
@@ -24,6 +24,7 @@ debian/scripts/koha-reset-passwd usr/sbin
debian/scripts/koha-restart-zebra usr/sbin
debian/scripts/koha-restore usr/sbin
debian/scripts/koha-run-backups usr/sbin
+debian/scripts/koha-shell usr/sbin
debian/scripts/koha-start-zebra usr/sbin
debian/scripts/koha-stop-zebra usr/sbin
debian/scripts/koha-upgrade-schema usr/sbin
--- a/debian/scripts/koha-shell
+++ a/debian/scripts/koha-shell
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+# koha-shell -- put you in a shell with a koha environment set up
+# Copyright 2012 Catalyst IT, Ltd
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+use Getopt::Long;
+use Modern::Perl;
+
+Getopt::Long::Configure("bundling");
+
+my %opts;
+my $res = GetOptions( \%opts, "command|c=s", "help|h", "login|l", "shell|s=s",
+ "preserve-environment|p|m", "verbose|v" );
+
+if ( !$res || $opts{help} ) {
+ show_help( !$res );
+ exit( !$res );
+}
+
+if ( !@ARGV ) {
+ show_help( 1, "An instance name must be supplied." );
+ exit(1);
+}
+my $instance = shift @ARGV;
+if ( !-e "/etc/koha/sites/$instance" ) {
+ show_help( 1, "The instance doesn't exist: $instance" );
+ exit(1);
+}
+my $shell = $opts{shell} || $ENV{SHELL} || '/bin/sh';
+
+# Now we're set up, build the 'su' command
+my @su_args;
+push @su_args, '/bin/su';
+push @su_args, '--preserve-environment' if $opts{'preserve-environment'};
+push @su_args, '--login' if $opts{login};
+push @su_args, '--command',
+ "env "
+ . "KOHA_CONF=/etc/koha/sites/$instance/koha-conf.xml "
+ . "PERL5LIB=/usr/share/koha/lib $shell"
+ . ( $opts{command} ? " -c '$opts{command}'" : '' );
+push @su_args, "$instance-koha";
+
+print "Command: '".join("' '",@su_args)."'\n" if $opts{verbose};
+system(@su_args);
+if ( $? == -1 ) {
+ print STDERR "failed to execute: $!\n";
+}
+elsif ( $? & 127 ) {
+ printf STDERR "child died with signal %d, %s coredump\n",
+ ( $? & 127 ), ( $? & 128 ) ? 'with' : 'without';
+}
+
+sub show_help {
+ my ( $err, $msg ) = @_;
+
+ my $fh = $err ? *STDERR : *STDOUT;
+ say $fh "Error: " . $msg if $msg;
+ print $fh $_ while ;
+}
+
+__DATA__
+koha-shell -- gives you a shell with your Koha environment set up
+
+Usage: koha-shell [options] [instance name]
+
+Options:
+ -c, --command COMMAND pass COMMAND to the invoked shell
+ -h, --help show this help and quit
+ -l, --login make the shell a login shell
+ -m, -p,
+ --preserve-environment do not reset environment variables
+ -s, --shell SHELL use SHELL instead of the one from your environment
+ -v, --verbose output the full command that will be executed
+
+The default shell is the one currently in use. Refer to su(1) for more detail
+on these options.
--