From b7679d0c09f272b4cff8706e7bd79183abf510cb Mon Sep 17 00:00:00 2001 From: ehuelsmann Date: Sun, 17 Aug 2014 08:56:00 +0000 Subject: [PATCH] Backport of 1.4 version of patch-release-upgrade.pl. --- tools/patch-release-upgrade.pl | 83 ++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100755 tools/patch-release-upgrade.pl diff --git a/tools/patch-release-upgrade.pl b/tools/patch-release-upgrade.pl new file mode 100755 index 0000000000..fcfbe4101c --- /dev/null +++ b/tools/patch-release-upgrade.pl @@ -0,0 +1,83 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use Getopt::Long; +use LedgerSMB::Database; + +my $user; +my $script_name = `basename $0`; chomp $script_name; +my $usage = qq| +usage: $script_name [ OPTION... ] database + +This script upgrades your database when moving from one patchlevel +to another, e.g. 1.3.15 to 1.3.18. + + +Options: + --user This option names the user to be used for logging in. + The name of the current user is the default value. + --help Prints this help screen. + +Note: + If the user (implied or explicitly specified) requires a password, it +will be asked for explicitly unless it's specified in an environment variable. +This is to prevent passwords being saved into the history file. + +|; + +sub rebuild_modules { + + + +### Modified copy/paste from LedgerSMB/Scripts/setup.pm + + my $database = LedgerSMB::Database->new( + { + username => $ENV{PGUSER}, + company_name => $ENV{PGDATABASE}, + password => $ENV{PGPASSWORD} + }); + + $database->load_modules('LOADORDER'); + $database->process_roles('Roles.sql'); + + my $dbh = DBI->connect( + "dbi:Pg:dbname=$ENV{PGDATABASE}", + $ENV{PGUSER}, $ENV{PGPASSWORD}, + { AutoCommit => 0, } + ); + my $sth = $dbh->prepare( + "UPDATE defaults SET value = ? WHERE setting_key = 'version'" + ); + $sth->execute($LedgerSMB::VERSION); + $dbh->commit; + + +#### end of copied code + + return 1; +}; + + +sub usage { print $usage; exit; } + + +GetOptions( + 'help' => \&usage, + 'user=s' => \$user, + ); + +if (scalar(@ARGV) != 1) { + my $argnum = scalar(@ARGV); + print STDERR "$script_name: Incorrect number of arguments ($argnum found; 1 expected)"; + &usage; +} + +$ENV{PGUSER} = $user if $user; +$ENV{PGDATABASE} = $ARGV[0]; +&rebuild_modules; + + +print "Database upgraded to $LedgerSMB::VERSION.\n"; +exit 0;