[Bps-public-commit] r12457 - in Prophet/trunk: .
jesse at bestpractical.com
jesse at bestpractical.com
Sat May 17 05:44:36 EDT 2008
Author: jesse
Date: Sat May 17 05:44:36 2008
New Revision: 12457
Added:
Prophet/trunk/lib/Prophet/Config.pm
Modified:
Prophet/trunk/ (props changed)
Prophet/trunk/lib/Prophet/App.pm
Prophet/trunk/lib/Prophet/Record.pm
Log:
r31195 at dhcp113 (orig r12456): jesse | 2008-05-17 18:41:39 +0900
* revert that last splodey commit
Modified: Prophet/trunk/lib/Prophet/App.pm
==============================================================================
--- Prophet/trunk/lib/Prophet/App.pm (original)
+++ Prophet/trunk/lib/Prophet/App.pm Sat May 17 05:44:36 2008
@@ -4,10 +4,15 @@
package Prophet::App;
use base qw/Class::Accessor/;
use Path::Class;
-__PACKAGE__->mk_accessors(qw/_resdb_handle/);
+__PACKAGE__->mk_accessors(qw/_resdb_handle _config/);
use constant DEFAULT_REPLICA_TYPE => 'prophet';
+=head1 NAME
+
+Prophet::App
+
+=cut
sub _handle {
my $self = shift;
@@ -89,5 +94,31 @@
$@ = '';
}
+=head2 config
+
+If called with no arguments, returns the L<Prophet::Config> instance.
+
+If called with one arguments, returns the value of that config setting.
+
+If called with two arguments, sets the value of that config setting.
+
+=cut
+
+sub config {
+ my $self = shift;
+
+ unless ($self->_config) {
+ require Prophet::Config;
+ $self->_config(Prophet::Config->new);
+ }
+
+ return $self->_config if @_ == 0;
+
+ my $key = shift;
+ return $self->_config->get($key) if @_ == 0;
+
+ my $value = shift;
+ return $self->_config->set($key => $value);
+}
1;
Added: Prophet/trunk/lib/Prophet/Config.pm
==============================================================================
--- (empty file)
+++ Prophet/trunk/lib/Prophet/Config.pm Sat May 17 05:44:36 2008
@@ -0,0 +1,121 @@
+use warnings;
+use strict;
+
+package Prophet::Config;
+
+use Path::Class;
+
+=head1 NAME
+
+Prophet::Config
+
+=head1 SYNOPSIS
+
+ In ~/.prophetrc:
+
+ prefer_luids: 1
+
+=head1 DESCRIPTION
+
+This class represents configuration of Prophet and the application built on top
+of it.
+
+=head1 METHODS
+
+=head2 new
+
+Takes no arguments. Automatically loads the config for you. This is actually
+a singleton so multiple calls to new get the same config.
+
+=cut
+
+my $singleton;
+sub new {
+ my $class = shift;
+ return $singleton if $singleton;
+
+ my $self = $singleton = bless {}, $class;
+ $self->load_config_files;
+ return $self;
+}
+
+=head2 prophet_config_file
+
+The file which controls configuration for all Prophet apps. C<$HOME/.prophetc>.
+
+=cut
+
+sub prophet_config_file { dir($ENV{HOME}, ".prophetrc") }
+
+=head2 app_config_file
+
+The file which controls configuration for this application.
+C<$PROPHET_REPO/prophetrc>.
+
+=cut
+
+sub app_config_file { dir($ENV{PROPHET_REPO}, "prophetrc") }
+
+=head2 load_config_files [files]
+
+Loads the given config files. If no files are passed in, it will use the
+default of L</prophet_config_file> and L</app_config_file>.
+
+=cut
+
+sub load_config_files {
+ my $self = shift;
+ my @config = @_;
+ @config = ($self->prophet_config_file, $self->app_config_file) if !@config;
+
+ for my $file (@config) {
+ $self->load_config_file($file);
+ }
+}
+
+=head2 load_config_file file
+
+Loads the given config file.
+
+=cut
+
+sub load_config_file {
+ my $self = shift;
+ my $file = shift;
+
+ for my $line ($file->slurp) {
+ s/\#.*//; # strip comments
+ if ($line =~ /^([^:]+):\s*(.*)$/) {
+ $self->{$1} = $2;
+ }
+ }
+}
+
+=head2 get
+
+Gets a specific config setting.
+
+=cut
+
+sub get {
+ my $self = shift;
+ my $key = shift;
+
+ return $self->{$key};
+}
+
+=head2 set
+
+Sets a specific config setting.
+
+=cut
+
+sub set {
+ my $self = shift;
+ my $key = shift;
+ my $value = shift;
+
+ return $self->{$key} = $value;
+}
+1;
+
Modified: Prophet/trunk/lib/Prophet/Record.pm
==============================================================================
--- Prophet/trunk/lib/Prophet/Record.pm (original)
+++ Prophet/trunk/lib/Prophet/Record.pm Sat May 17 05:44:36 2008
@@ -137,7 +137,6 @@
}
=head2 load { uuid => $UUID } or { luid => $UUID }
-=head2 load { luid => $UUID }
Loads a Prophet record off disk by its uuid or luid.
@@ -344,17 +343,4 @@
return $luid;
}
-=head2 find_or_create_luid
-
-Finds the luid for the records uuid, or creates a new one. Returns the luid.
-
-=cut
-
-sub find_or_create_luid {
- my $self = shift;
- my $luid = $self->handle->find_or_create_luid(uuid => $self->uuid);
- $self->luid($luid);
- return $luid;
-}
-
1;
More information about the Bps-public-commit
mailing list