summaryrefslogtreecommitdiff
path: root/usr/src/libpiny/Piny/Environment.pm
diff options
context:
space:
mode:
authorJulian Blake Kongslie <jblake@omgwallhack.org>2010-03-17 22:47:35 -0700
committerJulian Blake Kongslie <jblake@omgwallhack.org>2010-03-17 22:47:35 -0700
commit654a7353e1c46878dd84bfef0e987f0205e03fde (patch)
tree1d50d4ae0fad99f874fc85673907c9beb8d133fb /usr/src/libpiny/Piny/Environment.pm
parent225cfa610fc07cb143f5a86c06f87829f9e240d2 (diff)
downloadpiny-code-654a7353e1c46878dd84bfef0e987f0205e03fde.tar.gz
piny-code-654a7353e1c46878dd84bfef0e987f0205e03fde.zip
Initial version of the libpiny stuff.
Diffstat (limited to 'usr/src/libpiny/Piny/Environment.pm')
-rw-r--r--usr/src/libpiny/Piny/Environment.pm38
1 files changed, 38 insertions, 0 deletions
diff --git a/usr/src/libpiny/Piny/Environment.pm b/usr/src/libpiny/Piny/Environment.pm
new file mode 100644
index 0000000..30df62c
--- /dev/null
+++ b/usr/src/libpiny/Piny/Environment.pm
@@ -0,0 +1,38 @@
+package Piny::Environment;
+
+use Moose;
+
+use Piny::User;
+
+# Attributes
+
+has 'user' =>
+ ( is => 'ro'
+ , isa => 'Piny::User'
+ , lazy_build => 1
+ , init_arg => undef
+ );
+
+# Builder methods
+
+sub _build_user {
+ my ( $s ) = @_;
+
+ if ( defined $ENV{"SUDO_UID"} ) {
+ return Piny::User->new( uid => $ENV{"SUDO_UID"} );
+ } elsif ( defined $ENV{"SUDO_USER"} ) {
+ return Piny::User->new( username => $ENV{"SUDO_USER"} );
+ } elsif ( defined $ENV{"UID"} ) {
+ return Piny::User->new( uid => $ENV{"UID"} );
+ } elsif ( defined $ENV{"USER"} ) {
+ return Piny::User->new( username => $ENV{"USERNAME"} );
+ } else {
+ return Piny::User->new( uid => $< );
+ };
+};
+
+# Moose boilerplate
+
+__PACKAGE__->meta->make_immutable;
+
+1;