X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FConf.pm;h=270b61c9f368de69971e38336a5fdb126b428a72;hp=566d8e8d9bf9a4ab2a594e7292c170d9e918096d;hb=7422aa77086326ba1e6032150ce5704d1003ea6f;hpb=dcdf657e77ec7b46dc69e19a849a9c133123db7c 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.