]> git.vpit.fr Git - perl/modules/rgit.git/blobdiff - lib/App/Rgit/Config.pm
We need to chdir back to the cwd when we are over, so revert root_repo back to cwd_repo
[perl/modules/rgit.git] / lib / App / Rgit / Config.pm
index 20ef2234d77f0c58b00ea268cc4f71776b619079..ae850758197bd429fa540b8341ded6db55f187e0 100644 (file)
@@ -4,9 +4,12 @@ use strict;
 use warnings;
 
 use Carp qw/croak/;
+use Cwd qw/abs_path/;
+use File::Spec::Functions qw/file_name_is_absolute/;
 
-use Object::Tiny qw/root git/;
+use Object::Tiny qw/root git cwd_repo/;
 
+use App::Rgit::Repository;
 use App::Rgit::Utils qw/validate/;
 
 =head1 NAME
@@ -15,7 +18,11 @@ App::Rgit::Config - Base class for App::Rgit configurations.
 
 =head1 VERSION
 
-Version 0.01
+Version 0.02
+
+=cut
+
+our $VERSION = '0.02';
 
 =head1 DESCRIPTION
 
@@ -33,11 +40,18 @@ Creates a new configuration object based on the root directory C<$root> and usin
 
 sub new {
  my ($class, %args) = &validate;
+ my $root = $args{root};
+ return unless defined $root and -d $root;
+ $root = abs_path $root unless file_name_is_absolute $root;
+ return unless defined $args{git} and -x $args{git};
  my $conf = 'App::Rgit::Config::Default';
  eval "require $conf; 1" or croak "Couldn't load $conf: $@";
+ my $r = App::Rgit::Repository->new(fake => 1);
+ return unless defined $r;
  $conf->SUPER::new(
-  root => $args{root},
-  git  => $args{git},
+  root     => $root,
+  git      => $args{git},
+  cwd_repo => $r,
  );
 }
 
@@ -47,6 +61,8 @@ sub new {
 
 =head2 C<repos>
 
+=head2 C<cwd_repo>
+
 Accessors.
 
 =head1 SEE ALSO