Git::Repository::Plugin::AUTOLOAD - Git subcommands as Git::Repository methods
use Git::Repository 'AUTOLOAD'; my $r = Git::Repository->new(); $r->add($file); $r->commit( '-m' => 'message' ); # NOTE: might be overridden by the 'Log' plugin my $log = $r->log('-1'); # use "_" for "-" in command names my $sha1 = $r->rev_parse('master'); # can be used as a class method Git::Repository->clone( $url );
Any method call caught by
AUTOLOAD will simply turn all
_ (underscore) into
- (dash), and call
run() on the invocant, with the transformed method name as the first parameter.
my $sha1 = $r->rev_parse('master');
does exactly the same thing as:
my $sha1 = $r->run( 'rev-parse', 'master' );
All parameters to the original method call are kept, so these autoloaded methods can take option hashes.
AUTOLOAD does not install methods in the invocant class (but what's the cost of a Perl subroutine call compared to forking a git subprocess?), so that plugins adding new methods always take precedence.
Philippe Bruhat (BooK) <email@example.com>.
Copyright 2014-2016 Philippe Bruhat (BooK), all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.