use Getopt::Long;
use Pod::Usage;
+my %db_defaults = (
+ driver => 'mysql',
+ host => 'localhost',
+ port => '3306',
+);
+
my $path = "./";
-my $db_driver = 'mysql';
-my $db_host = 'localhost';
-my $db_port = '3306';
+my $db_driver;
+my $db_host;
+my $db_port;
my $db_name;
my $db_user;
my $db_passwd;
+my $koha_conf;
my $help;
GetOptions(
"db_name=s" => \$db_name,
"db_user=s" => \$db_user,
"db_passwd=s" => \$db_passwd,
+ "koha-conf:s" => \$koha_conf,
"h|help" => \$help
);
# If we were asked for usage instructions, do it
pod2usage(1) if defined $help;
+if (defined $koha_conf) {
+ if ($koha_conf eq '' and not defined $ENV{KOHA_CONF}) {
+ print STDERR "Error: KOHA_CONF is not defined\n";
+ exit(1);
+ }
+
+ $koha_conf ||= $ENV{KOHA_CONF};
+ unless (-r $koha_conf) {
+ print STDERR "Error: File $koha_conf does not exist or is not readable\n";
+ exit(1);
+ }
+
+ require C4::Context;
+ my $context = C4::Context->new($koha_conf);
+ unless ($context) {
+ print STDERR "Error: Koha context creation failed. Please check that $koha_conf is correct\n";
+ exit(1);
+ }
+
+ $context->set_context;
+ $db_defaults{driver} = $context->config('db_scheme');
+ $db_defaults{host} = $context->config('hostname');
+ $db_defaults{port} = $context->config('port');
+ $db_defaults{name} = $context->config('database');
+ $db_defaults{user} = $context->config('user');
+ $db_defaults{passwd} = $context->config('pass');
+}
+
+$db_driver //= $db_defaults{driver};
+$db_host //= $db_defaults{host};
+$db_port //= $db_defaults{port};
+$db_name //= $db_defaults{name};
+$db_user //= $db_defaults{user};
+$db_passwd //= $db_defaults{passwd};
+
if (! defined $db_name ) {
print "Error: \'db_name\' parameter is mandatory.\n";
pod2usage(1);
=head1 SYNOPSIS
- update_dbix_class_files.pl --db_name=db-name --db_user=db-user \
- --db_passwd=db-pass ...
+ update_dbix_class_files.pl [--koha-conf <path>] --db_name=db-name \
+ --db_user=db-user --db_passwd=db-pass ...
The command in usually called from the root directory for the Koha source tree.
If you are running from another directory, use the --path switch to specify
=over 8
+=item B<--koha-conf> <path>
+
+Path to koha-conf.xml from which DB connection params will be retrieved.
+
+<path> is optional and defaults to the value of environment variable KOHA_CONF,
+if set. It is an error to omit the <path> if KOHA_CONF is not set.
+
+Any B<--db_*> options will override values retrieved from <path>.
+
=item B<--db_name>
DB name. (mandatory)
prints this help text
-=back
\ No newline at end of file
+=back