CSS-Prepare

 view release on metacpan or  search on metacpan

bin/assets  view on Meta::CPAN

#!/usr/bin/env perl

use Modern::Perl;
use CSS::Prepare;
use Getopt::Long    qw( :config bundling );
use Pod::Usage;

use constant OPTIONS => qw(
             help|h
    assets-output|m=s
      assets-base|n=s
);
use constant REQUIRED_OPTIONS => qw( assets-output );



my %option   = get_options_or_exit();
my $preparer = CSS::Prepare->new(
        assets_base   => $option{'assets-base'},
        assets_output => $option{'assets-output'},
    );

foreach my $arg ( @ARGV ) {
    my $output = $preparer->copy_file_to_staging( $arg );
    say $output
		if defined $option{'assets-base'};
}
exit;



sub get_options_or_exit {
    my %getopts = @_;
    
    my $known = GetOptions( \%getopts, OPTIONS );
    my $usage = ! $known || $getopts{'help'};
    
    foreach my $key ( REQUIRED_OPTIONS ) {
        $usage = 1
            unless defined $getopts{ $key };
    }
    
    pod2usage() if $usage;
    
    return %getopts;
}

__END__

=head1 NAME

B<assets> - synchronise files to the assets staging area

=head1 SYNOPSIS

B<assets> B<--assets-output F<dir> --assets-base F<URI> F<file>> [...]
    
=head1 DESCRIPTION

Copies all F<file> arguments to the output F<dir>, using the same SHA1
naming scheme as L<CSS::Prepare> uses. This allows you to upload static
assets in the same way, without the requirement of them needing to be 
referenced in your CSS.



( run in 0.972 second using v1.01-cache-2.11-cpan-437f7b0c052 )