]> git.vpit.fr Git - perl/modules/rgit.git/blobdiff - lib/App/Rgit/Config.pm
Always canonify the root, the git path and the repo directory
[perl/modules/rgit.git] / lib / App / Rgit / Config.pm
index d299283eb8db72cfaea64cf23cfe4e4becfa0cc8..2ac22b23c149cc268412cabf80d9b52097cf560d 100644 (file)
@@ -3,14 +3,12 @@ package App::Rgit::Config;
 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 cwd_repo debug/;
+use Carp                  ();
+use Cwd                   qw/abs_path/;
+use File::Spec::Functions qw/canonpath/;
 
 use App::Rgit::Repository;
-use App::Rgit::Utils qw/validate :levels/;
+use App::Rgit::Utils qw/:levels/;
 
 use constant IS_WIN32 => $^O eq 'MSWin32';
 
@@ -20,11 +18,11 @@ App::Rgit::Config - Base class for App::Rgit configurations.
 
 =head1 VERSION
 
-Version 0.05
+Version 0.06
 
 =cut
 
-our $VERSION = '0.05';
+our $VERSION = '0.06';
 
 =head1 DESCRIPTION
 
@@ -41,11 +39,14 @@ Creates a new configuration object based on the root directory C<$root> and usin
 =cut
 
 sub new {
- my ($class, %args) = &validate;
+ my $class = shift;
+ $class = ref $class || $class;
+
+ my %args = @_;
 
  my $root = $args{root};
  return unless defined $root and -d $root;
- $root = abs_path $root unless file_name_is_absolute $root;
+ $root = canonpath abs_path $root;
 
  my $git = $args{git};
  return unless defined $git;
@@ -57,19 +58,20 @@ sub new {
  } else {
   return unless -x $git;
  }
+ $git = canonpath abs_path $git;
 
  my $conf = 'App::Rgit::Config::Default';
- eval "require $conf; 1" or croak "Couldn't load $conf: $@";
+ eval "require $conf; 1" or Carp::confess("Couldn't load $conf: $@");
 
  my $r = App::Rgit::Repository->new(fake => 1);
  return unless defined $r;
 
- $conf->SUPER::new(
+ bless {
   root     => $root,
   git      => $git,
   cwd_repo => $r,
   debug    => defined $args{debug} ? int $args{debug} : WARN,
);
}, $conf;
 }
 
 =head2 C<info $msg>
@@ -112,7 +114,13 @@ sub crit { shift->_notify(CRIT, @_) }
 
 =head2 C<debug>
 
-Accessors.
+Read-only accessors.
+
+=cut
+
+BEGIN {
+ eval "sub $_ { \$_[0]->{$_} }" for qw/root git cwd_repo debug/;
+}
 
 =head1 SEE ALSO
 
@@ -121,7 +129,7 @@ L<rgit>.
 =head1 AUTHOR
 
 Vincent Pit, C<< <perl at profvince.com> >>, L<http://profvince.com>.
-   
+
 You can contact me by mail or on C<irc.perl.org> (vincent).
 
 =head1 BUGS
@@ -136,7 +144,7 @@ You can find documentation for this module with the perldoc command.
 
 =head1 COPYRIGHT & LICENSE
 
-Copyright 2008-2009 Vincent Pit, all rights reserved.
+Copyright 2008,2009,2010 Vincent Pit, all rights reserved.
 
 This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.