]> git.vpit.fr Git - perl/modules/rgit.git/blobdiff - lib/App/Rgit/Config.pm
Remove trailing whitespace
[perl/modules/rgit.git] / lib / App / Rgit / Config.pm
index 846006ee97ddab1ddc7b00662527cba95b1507d1..76a605085b6fc0a8777fde3669abe033505c18f2 100644 (file)
@@ -7,9 +7,10 @@ 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 App::Rgit::Repository;
+use App::Rgit::Utils qw/validate :levels/;
 
-use App::Rgit::Utils qw/validate/;
+use constant IS_WIN32 => $^O eq 'MSWin32';
 
 =head1 NAME
 
@@ -17,11 +18,11 @@ App::Rgit::Config - Base class for App::Rgit configurations.
 
 =head1 VERSION
 
-Version 0.02
+Version 0.06
 
 =cut
 
-our $VERSION = '0.02';
+our $VERSION = '0.06';
 
 =head1 DESCRIPTION
 
@@ -39,25 +40,83 @@ 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 $git = $args{git};
+ return unless defined $git;
+ if (IS_WIN32) {
+  unless (-x $git) {
+   $git .= '.bat';
+   return unless -x $git;
+  }
+ } else {
+  return unless -x $git;
+ }
+
  my $conf = 'App::Rgit::Config::Default';
  eval "require $conf; 1" or croak "Couldn't load $conf: $@";
- $conf->SUPER::new(
-  root => $args{root},
-  git  => $args{git},
- );
+
+ my $r = App::Rgit::Repository->new(fake => 1);
+ return unless defined $r;
+
+ bless {
+  root     => $root,
+  git      => $git,
+  cwd_repo => $r,
+  debug    => defined $args{debug} ? int $args{debug} : WARN,
+ }, $conf;
 }
 
+=head2 C<info $msg>
+
+=head2 C<warn $msg>
+
+=head2 C<err $msg>
+
+=head2 C<crit $msg>
+
+Notifies a message C<$msg> of the corresponding level.
+
+=cut
+
+sub _notify {
+ my $self = shift;
+ my $level = shift;
+ if ($self->debug >= $level) {
+  print STDERR @_;
+  return 1;
+ }
+ return 0;
+}
+
+sub info { shift->_notify(INFO, @_) }
+
+sub warn { shift->_notify(WARN, @_) }
+
+sub err  { shift->_notify(ERR, @_) }
+
+sub crit { shift->_notify(CRIT, @_) }
+
 =head2 C<root>
 
 =head2 C<git>
 
 =head2 C<repos>
 
-Accessors.
+=head2 C<cwd_repo>
+
+=head2 C<debug>
+
+Read-only accessors.
+
+=cut
+
+BEGIN {
+ eval "sub $_ { \$_[0]->{$_} }" for qw/root git cwd_repo debug/;
+}
 
 =head1 SEE ALSO
 
@@ -66,7 +125,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
@@ -81,7 +140,7 @@ You can find documentation for this module with the perldoc command.
 
 =head1 COPYRIGHT & LICENSE
 
-Copyright 2008 Vincent Pit, all rights reserved.
+Copyright 2008-2009 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.