package Jifty::Script::Env; use warnings; use strict; use base qw/Jifty::Script/; use Scalar::Util (); use Jifty::Config; use Jifty::YAML; =head1 NAME Jifty::Script::Env - access the Jifty environment =head1 SYNOPSIS jifty env [arguments] jifty env Util share_root jifty env 'Util->share_root' jifty env Util.share_root =head1 DESCRIPTION Loads Jifty and your configuration, allowing you to verify and examine your setup. Loads Jifty::Class and calls method on it, providing shortcuts for things like: perl -MJifty::Util -e 'print Jifty::Util->share_root, "\n";' The class and method can be combined with a '->' But, unquoted '>' is a redirect so simply use the '-' or '.' characters. jifty env Util share_root jifty env 'Util->share_root' jifty env Util.share_root You may chain accessors. A leading dot also means the class is Jifty. jifty env Jifty.config.framework ApplicationName jifty env .config.framework ApplicationName With no arguments, acts as 'C'. =head2 options This script has no specific options now. Maybe it will have some command lines options in the future. =over 8 =item B<--help> Print a brief help message and exits. =item B<--man> Prints the manual page and exits. =back =head1 METHODS =head2 run Prints whatever the user asked for. =cut sub run { my $self = shift; my (@args) = @_; $self->print_help; Jifty->new(); unless(@args) { $self->run('Jifty.config.stash'); print "\nSee also `jifty env --help`\n"; return; } my ($class, $method, @and) = split(/(?:->?|\.)/, shift(@args)); $class ||= 'Jifty'; $method ||= shift(@args); my @ans; # enable Jifty.config.stash usage unless($class eq 'Jifty') { $class = 'Jifty::' . $class; eval("require $class") or die $@; } # walk down the chain of methods unshift(@and, $method); $method = pop(@and); while(my $attrib = shift(@and)) { $class = $class->$attrib; } @ans = $class->$method(@args); # if something in the answer is a reference, just dump if(grep({Scalar::Util::reftype($_)} @ans)) { print Jifty::YAML::Dump(\@ans); } else { print join("\n", @ans, ''); } } # end run # original author: Eric Wilhelm 1; # vim:ts=4:sw=4:et:sta