diff options
author | jeff <jeff> | 2007-02-27 01:51:52 +0000 |
---|---|---|
committer | jeff <jeff> | 2007-02-27 01:51:52 +0000 |
commit | fbfffdabe931d704aae420984058e61dc4196b01 (patch) | |
tree | 20b82398f278cb8a0aebd47e1beb433bba660e03 /FS/bin/freeside-init-config | |
parent | 1d719ccff55b1a82208fdf44b6dcd2da96b3c42e (diff) |
config goes in database
Diffstat (limited to 'FS/bin/freeside-init-config')
-rwxr-xr-x | FS/bin/freeside-init-config | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/FS/bin/freeside-init-config b/FS/bin/freeside-init-config new file mode 100755 index 000000000..a186d1a85 --- /dev/null +++ b/FS/bin/freeside-init-config @@ -0,0 +1,92 @@ +#!/usr/bin/perl -Tw + +use strict; +use vars qw($opt_u $opt_f $opt_v); +use Getopt::Std; +use IO::File; +use FS::UID qw(adminsuidsetup checkeuid dbh); +use FS::CurrentUser; +use FS::Record qw(qsearch); + + +die "Not running uid freeside!" unless checkeuid(); + +getopts("u:vf"); +my $dir = shift or die &usage; + +$FS::CurrentUser::upgrade_hack = 1; +adminsuidsetup $opt_u; #$user; + +$|=1; + +my $conf = new FS::Conf; +if (!scalar(qsearch('conf', {})) || $opt_f) { + + foreach my $item ( $conf->config_items() ) { + insert_config_item($item,$dir); + } + + # ugly pseudo false laziness with Conf.pm + foreach my $item ( map { my $basename = basename($_); + $basename =~ /^(.*)$/; + $basename = $1; + new FS::ConfItem { + 'key' => $basename, + 'type' => '', + } + } glob($dir. '/invoice_template_*'), + glob($dir. '/invoice_html_*'), + glob($dir. '/invoice_htmlnotes_*'), + glob($dir. '/invoice_latex_*'), + glob($dir. '/invoice_latexnotes_*') + ) { + + insert_config_item($item,$dir); + + } + + foreach my $item ( map { my $basename = basename($_); + $basename =~ /^(.*)$/; + $basename = $1; + new FS::ConfItem { + 'key' => $basename, + 'type' => 'binary', + } + } glob($dir. '/logo_*.png'), + glob($dir. '/logo_*.eps') + ) { + + insert_config_item($item,$dir); + + } + +} + +warn "Freeside database initialized - committing transaction\n" if $opt_v; + +dbh->commit or die dbh->errstr; +dbh->disconnect or die dbh->errstr; + +warn "Configuration initialization committed successfully\n" if $opt_v; + +sub insert_config_item { + local $/; + my ($item,$dir) = @_; + my $key = $item->key; + if (-e "$dir/$key") { + warn "Inserting $key\n" if $opt_v; + my $value = readline(new IO::File "$dir/$key"); + if ($item->type eq 'binary'){ + $conf->set_binary($key, $value); + }else{ + $conf->set($key, $value); + } + } +} + +sub usage { + die "Usage:\n freeside-init-config directory [ -v ] [ -f ]\n" + # [ -u user ] for devel/multi-db installs +} + +1; |