X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FDevel-REPL.git;a=blobdiff_plain;f=lib%2FDevel%2FREPL%2FProfile.pm;h=508529821f8da49af18be6da7078216a9df62578;hp=c5c0c23ea83104f1bc6dd1ed21f6e99aff522da1;hb=ce00c3c0a40bb8b788d36d85bdbba43d05523b9a;hpb=4d33251a9f6d375aaafd8aa274743c68dec8f720 diff --git a/lib/Devel/REPL/Profile.pm b/lib/Devel/REPL/Profile.pm index c5c0c23..5085298 100644 --- a/lib/Devel/REPL/Profile.pm +++ b/lib/Devel/REPL/Profile.pm @@ -5,4 +5,85 @@ use namespace::clean -except => [ 'meta' ]; requires 'apply_profile'; +=head1 NAME + +Devel::REPL::Profile + +=head1 SYNOPSIS + + package Devel::REPL::Profile::MyProject; + + use Moose; + use namespace::clean -except => [ 'meta' ]; + + with 'Devel::REPL::Profile'; + + sub apply_profile { + my ($self, $repl) = @_; + # do something here + } + + 1; + +=head1 DESCRIPTION + +For particular projects you might well end up running the same commands each +time the REPL shell starts up - loading Perl modules, setting configuration, +and so on. + +A mechanism called I exists to let you package and distribute these +start-up scripts, as Perl modules. + +=head1 USAGE + +Quite simply, follow the L section above to create a boilerplate +profile module. Within the C method, the C<$repl> variable can +be used to run any commands as the user would, within the context of their +running C shell instance. + +For example, to load a module, you might have something like this: + + sub apply_profile { + my ($self, $repl) = @_; + $repl->eval('use Carp'); + } + +As you can see, the C method is used to run any code. The user won't see +any output from that, and the code can "safely" die without destroying the +REPL shell. The return value of C will be the return value of the code +you gave, or else if it died then a C object is returned. + +If you want to load a C plugin, then use the following method: + + $repl->load_plugin('Timing'); + +The C and C methods should cover most of what you would +want to do before the user has access to the shell. Remember that plugin +features are immediately available, so you can load for example the C +plugin, and then declare C variables which the user will have access to. + +=head2 Selecting a Profile + +To run the shell with a particular profile, use the following command: + + system$ re.pl --profile MyProject + +Alternatively, you can set the environment variable C to +MyProject. + +When the profile name is unqualified, as in the above example, the profile is +assumed to be in the C namespace. Otherwise if you +pass something which contains the C<::> character sequence, it will be loaded +as-is. + +=head1 AUTHOR + +Matt S Trout - mst (at) shadowcatsystems.co.uk (L) + +=head1 LICENSE + +This library is free software under the same terms as perl itself + +=cut + 1;