extends 'Catalyst::Model';
+with 'Catalyst::Component::ApplicationAttribute';
with 'Catalyst::Component::InstancePerContext';
my $repo_dir_t = subtype NonEmptySimpleStr,
sub _build_repo_dir {
my $self = shift;
- $ENV{GITALIST_REPO_DIR} ?
- $ENV{GITALIST_REPO_DIR}
+ my $repo_dir = $self->_application->run_options->{repo_dir};
+
+ $repo_dir ?
+ $repo_dir
: $self->has_config_repo_dir
? $self->config_repo_dir
: '';
package Gitalist::ScriptRole;
use Moose::Role;
+use MooseX::Types::Moose qw/ Undef /;
use MooseX::Types::Common::String qw/NonEmptySimpleStr/;
use namespace::autoclean;
has repo_dir => (
- isa => NonEmptySimpleStr, is => 'ro',
- predicate => 'has_repo_dir'
+ isa => Undef | NonEmptySimpleStr,
+ is => 'ro',
+ default => sub {
+ return unless exists $ENV{GITALIST_REPO_DIR};
+ $ENV{GITALIST_REPO_DIR};
+ },
);
-before 'run' => sub {
- my $self = shift;
- if ($self->has_repo_dir) {
- # FIXME - This seems gross. I should be able to pass things through
- # to the app instance, but the params are sent to the engine
- # and not actually used to construct the app.. Not that
- # $ENV{GITLIST_REPO_DIR} is a bad move, just that that being
- # the mechanism by which this works that is non optimum.
- $ENV{GITALIST_REPO_DIR} = $self->repo_dir;
- }
-};
-
1;
=head1 NAME