Commit | Line | Data |
a5e340ba |
1 | #!/usr/bin/env perl |
2 | |
3 | use App::FatPacker -run_script; |
4 | |
5 | =head1 NAME |
6 | |
7 | fatpack - Command line frontend for App::FatPacker |
8 | |
9 | =head1 COMMANDS |
10 | |
11 | =head2 trace |
12 | |
3fdf85ca |
13 | $ fatpack trace [--to=trace-file|--to-stderr] [--use=MODULE] |
14 | myscript.pl |
a5e340ba |
15 | |
16 | Compiles myscript.pl (as in "perl -c") and writes out a trace file containing |
17 | every module require()d during the compilation. |
18 | |
19 | The trace file is called 'fatpacker.trace' by default; the --to option |
20 | overrides this. |
21 | |
22 | If you pass --to-stderr fatpack writes the trace to STDERR instead. |
23 | |
24 | You cannot pass both --to and --to-stderr. |
25 | |
3fdf85ca |
26 | If the --use option specifies a module (or modules, if used multiple |
27 | times) those modules will be additionally included in the trace output. |
28 | |
a5e340ba |
29 | =head2 packlists-for |
30 | |
31 | $ fatpack packlists-for Module1 Module2 Module3 |
32 | |
33 | Searches your perl's @INC for .packlist files containing the .pm files for |
34 | the modules requested and emits a list of unique packlist files to STDOUT. |
35 | |
36 | These packlists will, in a pure cpan-installation environment, be all non-core |
37 | distributions required for those modules. |
38 | |
39 | Unfortunately most vendors strip the .packlist files so if you installed |
40 | modules via e.g. apt-get you may be missing those modules; installing your |
41 | dependencies into a L<local::lib|local::lib> first is the preferred workaround. |
42 | |
43 | =head2 tree |
44 | |
45 | $ fatpack tree fatlib packlist1 packlist2 packlist3 |
46 | |
47 | Takes a list of packlist files and copies their contents into a tree at the |
48 | requested location. |
49 | |
50 | This tree should be sufficient to 'use lib' to make available all modules |
51 | provided by the distributions whose packlists were specified. |
52 | |
53 | =head2 file |
54 | |
55 | $ fatpack file |
56 | |
57 | Recurses into the 'lib' and 'fatlib' directories and bundles all .pm files |
58 | found into a BEGIN block which adds a virtual @INC entry to load these files |
59 | from the bundled code rather than disk. |
60 | |
61 | =head1 RECIPES |
62 | |
63 | Current basic recipe for packing: |
64 | |
65 | $ fatpack trace myscript.pl |
a884f0d7 |
66 | $ fatpack packlists-for `cat fatpacker.trace` >packlists |
67 | $ fatpack tree `cat packlists` |
24b4367e |
68 | $ (head -n1 myscript.pl |grep '^#!'; fatpack file; cat myscript.pl) >myscript.packed.pl |
a5e340ba |
69 | |
cb50b68f |
70 | The C<head -n1 myscript.pl |grep '^#!'> code pulls out the Unix shebang |
71 | line, if there is one, and injects it at the start of the packed script. |
72 | |
a5e340ba |
73 | =head1 COPYRIGHT, LICENSE, AUTHOR |
74 | |
75 | See the corresponding sections in L<App::FatPacker>. |
76 | |
77 | =cut |