correct usage
[freeside.git] / FS / bin / freeside-init-config
1 #!/usr/bin/perl -Tw
2
3 use strict;
4 use vars qw($opt_u $opt_f $opt_v);
5 use Getopt::Std;
6 use IO::File;
7 use FS::UID qw(adminsuidsetup checkeuid dbh);
8 use FS::CurrentUser;
9 use FS::Record qw(qsearch);
10
11
12 die "Not running uid freeside!" unless checkeuid();
13
14 getopts("u:vf");
15 my $dir = shift or die &usage;
16
17 $FS::CurrentUser::upgrade_hack = 1;
18 adminsuidsetup $opt_u; #$user;
19
20 $|=1;
21
22 my $conf = new FS::Conf;
23 if (!scalar(qsearch('conf', {})) || $opt_f) {
24
25   foreach my $item ( $conf->config_items() ) {
26     insert_config_item($item,$dir);
27   }
28
29   # ugly pseudo false laziness with Conf.pm 
30   foreach my $item ( map { my $basename = basename($_);
31                            $basename =~ /^(.*)$/;
32                            $basename = $1;
33                            new FS::ConfItem {
34                              'key'         => $basename,
35                              'type'        => '',
36                            }
37                          } glob($dir. '/invoice_template_*'),
38                            glob($dir. '/invoice_html_*'),
39                            glob($dir. '/invoice_htmlnotes_*'),
40                            glob($dir. '/invoice_latex_*'),
41                            glob($dir. '/invoice_latexnotes_*')
42                    ) {
43
44     insert_config_item($item,$dir);
45
46   }
47
48   foreach my $item ( map { my $basename = basename($_);
49                            $basename =~ /^(.*)$/;
50                            $basename = $1;
51                            new FS::ConfItem {
52                              'key'         => $basename,
53                              'type'        => 'binary',
54                            }
55                          } glob($dir. '/logo_*.png'),
56                            glob($dir. '/logo_*.eps')
57                    ) {
58
59     insert_config_item($item,$dir);
60
61   }
62
63 }
64
65 warn "Freeside database initialized - committing transaction\n" if $opt_v;
66
67 dbh->commit or die dbh->errstr;
68 dbh->disconnect or die dbh->errstr;
69
70 warn "Configuration initialization committed successfully\n" if $opt_v;
71
72 sub insert_config_item {
73   local $/;
74   my ($item,$dir) = @_;
75   my $key = $item->key;
76   if (-e "$dir/$key") {
77     warn "Inserting $key\n" if $opt_v;
78     my $value = readline(new IO::File "$dir/$key");
79     if ($item->type eq 'binary'){
80       $conf->set_binary($key, $value);
81     }else{
82       $conf->set($key, $value);
83     }
84   }
85 }
86
87 sub usage {
88   die "Usage:\n  freeside-init-config [ -v ] [ -f ] directory\n"
89   # [ -u user ] for devel/multi-db installs
90 }
91
92 1;