package Mojolicious::Plugin::AssetPack::Preprocessor; use Mojo::Base -base; use Mojo::JSON 'encode_json'; use Mojo::Util (); use Cwd (); use POSIX (); use constant DEBUG => $ENV{MOJO_ASSETPACK_DEBUG} || 0; use overload (q(&{}) => sub { shift->can('process') }, fallback => 1,); has cwd => sub {Cwd::getcwd}; sub can_process {1} sub checksum { my ($self, $text, $path) = @_; Mojo::Util::md5_sum($$text); } sub process { my ($self, $assetpack, $text, $path) = @_; die "No pre-processor defined for $path" unless $self->{processor}; $self->{processor}->($assetpack, $text, $path); $self; } sub _run { my ($self, $cmd, $in, $out) = @_; my $err = ''; local ($!, $?) = (0, -1); IPC::Run3::run3($cmd, $in, $out, \$err, {return_if_system_error => 1}); $! = 0 if !$? and $! == POSIX::ENOTTY; warn "[AssetPack] @$cmd \$?=$? \$!=$! $err\n" if DEBUG; return $self unless $?; die sprintf "Cannot execute '%s'. See %s\n", $cmd->[0], $self->_url if $! == 2; die sprintf "Failed to run '%s' (\$?=%s, \$!=%s) %s", join(' ', @$cmd), $? >> 8, int($!), $err; } sub _url {'https://metacpan.org/pod/Mojolicious::Plugin::AssetPack::Preprocessors'} 1; =encoding utf8 =head1 NAME Mojolicious::Plugin::AssetPack::Preprocessor - DEPRECATED =head1 DESCRIPTION L<Mojolicious::Plugin::AssetPack::Preprocessor> will be DEPRECATED. =head1 ATTRIBUTES =head2 cwd =head1 METHODS =head2 can_process =head2 checksum =head2 process =head1 SEE ALSO L<Mojolicious::Plugin::AssetPack>. =cut