@@ -, +, @@ misc/devel/update_dbix_class_files.pl --db_* options override values from $KOHA_CONF that it still works. Example: misc/devel/update_dbix_class_files.pl --db_name koha_dev \ --db_user koha --db_pass koha misc/devel/update_dbix_class_files.pl --koha-conf Verify that Koha/Schema files were updated accordingly misc/devel/update_dbix_class_files.pl --koha-conf \ /path/to/another/koha-conf.xml Verify that Koha/Schema files were updated accordingly --- misc/devel/update_dbix_class_files.pl | 64 +++++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 6 deletions(-) --- a/misc/devel/update_dbix_class_files.pl +++ a/misc/devel/update_dbix_class_files.pl @@ -25,13 +25,20 @@ use DBIx::Class::Schema::Loader qw/ make_schema_at /; 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( @@ -42,12 +49,48 @@ 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); @@ -68,8 +111,8 @@ misc/devel/update_dbix_class_files.pl =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 ] --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 @@ -79,6 +122,15 @@ a different path. =over 8 +=item B<--koha-conf> + +Path to koha-conf.xml from which DB connection params will be retrieved. + + is optional and defaults to the value of environment variable KOHA_CONF, +if set. It is an error to omit the if KOHA_CONF is not set. + +Any B<--db_*> options will override values retrieved from . + =item B<--db_name> DB name. (mandatory) @@ -111,4 +163,4 @@ path into which create the schema files. (defaults to './') prints this help text -=back +=back --