use strict;
use warnings;
-use Carp qw/croak/;
+use Carp ();
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/:levels/;
-use App::Rgit::Utils qw/validate/;
+use constant IS_WIN32 => $^O eq 'MSWin32';
=head1 NAME
=head1 VERSION
-Version 0.01
+Version 0.06
+
+=cut
+
+our $VERSION = '0.06';
=head1 DESCRIPTION
=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;
- 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},
- );
+ eval "require $conf; 1" or Carp::confess("Couldn't load $conf: $@");
+
+ 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
=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
=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.