No description
This repository has been archived on 2026-08-22. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
  • Perl 89.9%
  • Raku 10.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2017-06-24 10:13:14 +02:00
lib/App Will bundle the tar files and not the installed versions 2017-06-24 10:13:14 +02:00
script Will bundle the tar files and not the installed versions 2017-06-24 10:13:14 +02:00
t Will bundle the tar files and not the installed versions 2017-06-24 10:13:14 +02:00
.gitignore Initialized 2014-11-14 14:52:52 +01:00
.perltidyrc Will bundle the tar files and not the installed versions 2017-06-24 10:13:14 +02:00
.ship.conf Initialized 2014-11-14 14:52:52 +01:00
.travis.yml Run travis tests with Mojolicious 2014-11-14 19:58:15 +01:00
Changes Will bundle the tar files and not the installed versions 2017-06-24 10:13:14 +02:00
cpanfile Will bundle the tar files and not the installed versions 2017-06-24 10:13:14 +02:00
Makefile.PL Updated basic repo files 2016-08-20 15:37:50 +02:00
MANIFEST.SKIP Initialized 2014-11-14 14:52:52 +01:00
README.pod Initialized 2014-11-14 14:52:52 +01:00

package App::Implode;
use strict;
use warnings;

our $VERSION = '0.03';

1;

=encoding utf8

=head1 NAME

App::Implode - Pack an application into a single runable file

=head1 VERSION

0.03

=head1 DESCRIPTION

L<App::Implode> is an alternative to L<App::FatPacker> and L<App::fatten>. It
works by downloading all the dependencies and then bundle all the deps to a
single executable file.

It is very important that all the dependencies are documented in a
L<cpanfile|Module::CPANfile>. Example C<cpanfile>:

  requires "perl" => "5.12.0";
  requires "Mojolicious" => "5.00";

=head1 SYNOPSIS

=head2 Generetor

  $ cd my-project
  $ implode myapp.pl out.pl

=head2 Consumer

It is possible to set environment variables on the consumer side to instruct
how the code will be "exploded".

  $ out.pl
  $ APP_EXPLODE_VERBOSE=1 out.pl
  $ APP_EXPLODE_DIR=/extract/files/here out.pl

=over 4

=item * APP_EXPLODE_VERBOSE

Set this to a true value to get debug output.

=item * APP_EXPLODE_DIR

The default is to put the extracted files in a default
L<tmpdir|File::Spec/tmpdir>. A custom C<APP_EXPLODE_DIR> can be specified
if to override that behavior.

=back

=head1 CAVEAT

L<App::Implode> will put all the requirements into an bzip2'ed archive, and
write it into the generated file, in the C<__END__> section. This means that
you cannot use this section in the source script.

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2014, Jan Henning Thorsen

This program is free software, you can redistribute it and/or modify it under
the terms of the Artistic License version 2.0.

=head1 AUTHOR

Jan Henning Thorsen - C<jhthorsen@cpan.org>

=cut