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 cwd_repo debug/;
-
use App::Rgit::Repository;
-use App::Rgit::Utils qw/validate :levels/;
+use App::Rgit::Utils qw/:levels/;
+
+use constant IS_WIN32 => $^O eq 'MSWin32';
=head1 NAME
=head1 VERSION
-Version 0.04
+Version 0.06
=cut
-our $VERSION = '0.04';
+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: $@";
+ 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 => $args{git},
+ git => $git,
cwd_repo => $r,
debug => defined $args{debug} ? int $args{debug} : WARN,
- );
+ }, $conf;
}
=head2 C<info $msg>
=head2 C<debug>
-Accessors.
+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.