# Copyright © 2010 Julian Blake Kongslie # Licensed under the BSD 3-clause license. use strict; use warnings; package Piny::Environment; use MooseX::Singleton; use MooseX::StrictConstructor; # Attributes has 'user' => ( is => 'ro' , isa => 'Piny::User' , lazy_build => 1 , init_arg => undef ); # Builder methods sub _build_user { my ( $s ) = @_; eval "use Piny::User"; if ( defined $ENV{"SUDO_UID"} ) { return Piny::User->new( uid => $ENV{"SUDO_UID"} ); } elsif ( defined $ENV{"SUDO_USER"} ) { return Piny::User->new( name => $ENV{"SUDO_USER"} ); } elsif ( defined $ENV{"UID"} ) { return Piny::User->new( uid => $ENV{"UID"} ); } elsif ( defined $ENV{"USER"} ) { return Piny::User->new( name => $ENV{"USER"} ); } else { return Piny::User->new( uid => $< ); }; }; # Moose boilerplate __PACKAGE__->meta->make_immutable( inline_constructor => 0 ); 1;