Dist::...n::Run(3pm)
π Dist::Zilla::Plugin::Run β the manual page, but make it cute π
okay bestie, so this is the Dist::...n::Run(3pm) page β it's part of the User Contributed Perl Documentation, and it's literally the page for Dist::Zilla::Plugin::Run, which runs external commands and code at specific phases of Dist::Zilla. β¨
πΈ NAME πΈ
Dist::Zilla::Plugin::Run β Run external commands and code at specific phases of Dist::Zilla. periodt. π
π VERSION π
version 0.050
β¨ SYNOPSIS β¨
okay so here's the whole vibe, copy it exactly:
[Run::AfterBuild]
run = script/do_this.pl --dir %d --version %v
run = script/do_that.pl
eval = unlink scratch.dat
[Run::BeforeBuild]
fatal_errors = 0
run = script/do_this.pl --version %v
run = script/do_that_crashy_thing.pl
eval = if ($ENV{SOMETHING}) {
eval = $_[0]->log('some message')
eval = }
[Run::BeforeArchive]
run = script/myapp_before1.pl %d %v
run = script/myapp_before2.pl %n %v
run_no_trial = script/no_execution_on_trial.pl %n %v
[Run::BeforeRelease]
run = script/myapp_before1.pl %a
run = script/myapp_before2.pl %n %v
run_no_trial = script/no_execution_on_trial.pl %n %v
[Run::Release]
run = script/myapp_deploy1.pl %a
run = deployer.pl --dir %d --tgz %a --name %n --version %v
run_no_trial = script/no_execution_on_trial.pl --dir %d --tgz %a --name %n --version %v
[Run::AfterRelease]
run = script/myapp_after.pl --archive %a --dir %d --version %v
; %p can be used as the path separator if you have contributors on a different OS
run = script%pmyapp_after.pl --archive %a --dir %d --version %v
[Run::AfterRelease / MyAppAfter]
run = script/myapp_after.pl --archive %a --dir %d --version %v
[Run::Test]
run = script/tester.pl --name %n --version %v some_file.ext
run_if_release = ./Build install
run_if_release = make install
[Run::AfterMint]
run = some command %d
eval = unlink scratch.dat
eval = print "I just minted %n for you. Have a nice day!\n";
look at that. it's giving automation. π
π¦ DESCRIPTION π¦
Run arbitrary commands and code at various Dist::Zilla phases. that's it, that's the whole thing, and it's iconic. π
π PARAMETERS π
π run
Run the specific command at the specific Dist::Zilla phase given by the plugin. for example, [Run::Release] runs during the release phase. no cap. β¨
πΈ run_if_trial
Only run the given command if this is a trial build or release.
π run_no_trial
Only run the given command if this isn't a trial build or release.
β run_if_release
Only run the given command if this is a release.
π§ run_no_release
Only run a given command if this isn't a release.
π eval
Treats the input as a list of lines of Perl code; the code is evaluated at the specific Dist::Zilla phase given by the plugin. The code is executed in its own eval scope, within a subroutine body; @_ contains the instance of the plugin executing the code.
ok so important heads-up bestie: remember thatshiftin anevalactually operates on@ARGV, not@_, so to access the plugin instance, use$_[0]. not me learning that the hard way π
π₯ censor_commands
Normally, run* commands are included in distribution metadata when used with the [MetaConfig] plugin. To bypass this, set censor_commands = 1. Additionally, this command is set to true automatically when a URL with embedded password is present.
Defaults to false.
π fatal_errors
When true, if the run command returns a non-zero exit status or the eval command dies, the build will fail. Defaults to true.
π¦ quiet
When true, diagnostic messages are not printed (except in --verbose mode).
Defaults to false.
π EXECUTION ORDER π
All commands for a given option name are executed together, in the order in which they are documented above. Within commands of the same option name, order is preserved (from the order provided in dist.ini).
so yes bestie, the order is the order. respect it. π
β¨ ENVIRONMENT β¨
For executed commands, open3 in IPC::Open3 is used β there is no subshell. Consequently environment variables may or may not be available depending on the individual architecture used. For Perl strings that are evaluated, they are done in the dzil process, so all current global variables and other state is available for use.
The current working directory is undefined, and may vary depending on the version of Dist::Zilla being used. If the state of the filesystem is important, explicitly change directories first, or base your relative paths off of the build root (available as %d, see below).
the cwd being undefined is so real of it π don't trust it, don't look at it, just chdir first.
π CONVERSIONS π
The following conversions/format specifiers are defined for passing as arguments to the specified commands and eval strings (though not all values are available at all phases).
%aβ the archive of the release (only available to all *Release phases), as documented to be passed to BeforeRelease, Release, AfterRelease plugins%oβ the directory in which the distribution source originated%dβ the directory in which the distribution was built (or minted) (not available inBeforeBuild)%nβ the distribution name%pβ path separator ('/'on Unix,'\\'on Win32... useful for cross-platformdist.inifiles)%vβ the distribution version, if available (depending on the phase, theVersionProviderplugin may not be able to return a version)%tβ"-TRIAL"if the release is a trial release, otherwise the empty string%xβ full path to the current perl interpreter (like$^Xbut from Config)
Additionally %s is retained for backward compatibility (for those plugins that existed when it was documented). Each occurrence is replaced by a different value (like the regular sprintf function). Individual plugins define their own values for the positional replacement of %s.
NOTE: when using filenames (e.g.%d,%nand%x), be mindful that these paths could contain special characters or whitespace, so if they are to be used in a shell command, take care to use quotes or escapes! π¨
π DANGER! SECURITY RISK! π
The very nature of these plugins is to execute code. Be mindful that your code may run on someone else's machine and don't be a jerk!
fr fr. don't be a jerk. it's not that deep. π«Ά
πΈ SUPPORT πΈ
Bugs may be submitted through the RT bug tracker <https://rt.cpan.org/Public/Dist/Display.html?Name=Dist-Zilla-Plugin-Run> (or bug-Dist-Zilla-Plugin-Run@rt.cpan.org <mailto:bug-Dist-Zilla-Plugin-Run@rt.cpan.org>).
There is also a mailing list available for users of this distribution, at <http://dzil.org/#mailing-list>.
There is also an irc channel available for users of this distribution, at #distzilla on irc.perl.org <irc://irc.perl.org/#distzilla>.
π AUTHOR π
Torsten Raudssus <torsten@raudss.us> <https://raudss.us/>
π«Ά CONTRIBUTORS π«Ά
- Karen Etheridge <ether@cpan.org>
- Randy Stauner <rwstauner@cpan.org>
- Nickolay Platonov <nplatonov@cpan.org>
- Olivier MenguΓ© <dolmen@cpan.org>
- Al Newkirk <github@alnewkirk.com>
- David Golden <dagolden@cpan.org>
- Graham Ollis <plicease@cpan.org>
- Tatsuhiko Miyagawa <miyagawa@cpan.org>
- Thomas Sibley <tsibley@cpan.org>
π COPYRIGHT AND LICENCE π
This software is copyright (c) 2010 by Raudssus Social Software <https://raudss.us/>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
okay and that's the whole page bestie, no notes, we ate. π β¨ this was generated from perl v5.38.2 and the page itself is dated 2024-06-07, under the name Dist::...n::Run(3pm). go run some commands, you main character. ππ
π¦ where this page comes from
- debian trixie: libdist-zilla-plugin-run-perl 0.050-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu resolute: libdist-zilla-plugin-run-perl 0.050-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: libdist-zilla-plugin-run-perl 0.050-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms