summaryrefslogtreecommitdiff
path: root/FS/FS/Conf.pm
diff options
context:
space:
mode:
Diffstat (limited to 'FS/FS/Conf.pm')
-rw-r--r--FS/FS/Conf.pm29
1 files changed, 26 insertions, 3 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 566d8e8d9..270b61c9f 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -1,11 +1,15 @@
package FS::Conf;
-use vars qw($default_dir @config_items @card_types $DEBUG );
+use vars qw($default_dir $base_dir @config_items @card_types $DEBUG );
use IO::File;
use File::Basename;
use FS::ConfItem;
use FS::ConfDefaults;
+$base_dir = '%%%FREESIDE_CONF%%%';
+$default_dir = '%%%FREESIDE_CONF%%%';
+
+
$DEBUG = 0;
=head1 NAME
@@ -52,13 +56,15 @@ $FS::Conf::default_dir has not been set.
sub new {
my($proto,$dir) = @_;
my($class) = ref($proto) || $proto;
- my($self) = { 'dir' => $dir || $default_dir } ;
+ my($self) = { 'dir' => $dir || $default_dir,
+ 'base_dir' => $base_dir,
+ };
bless ($self, $class);
}
=item dir
-Returns the directory.
+Returns the conf directory.
=cut
@@ -73,6 +79,23 @@ sub dir {
$1;
}
+=item base_dir
+
+Returns the base directory. By default this is /usr/local/etc/freeside.
+
+=cut
+
+sub base_dir {
+ my($self) = @_;
+ my $base_dir = $self->{base_dir};
+ -e $base_dir or die "FATAL: $base_dir doesn't exist!";
+ -d $base_dir or die "FATAL: $base_dir isn't a directory!";
+ -r $base_dir or die "FATAL: Can't read $base_dir!";
+ -x $base_dir or die "FATAL: $base_dir not searchable (executable)!";
+ $base_dir =~ /^(.*)$/;
+ $1;
+}
+
=item config KEY
Returns the configuration value or values (depending on context) for key.