Boxer
view release on metacpan or search on metacpan
lib/Boxer/CLI/Command/Compose.pm view on Meta::CPAN
package Boxer::CLI::Command::Compose;
=encoding UTF-8
=cut
use v5.20;
use utf8;
use Role::Commons -all;
use feature 'signatures';
use namespace::autoclean 0.16;
use Path::Tiny;
use Module::Runtime qw/use_module/;
use Boxer::CLI -command;
use strictures 2;
no warnings "experimental::signatures";
=head1 VERSION
Version v1.4.3
=cut
our $VERSION = "v1.4.3";
use constant {
abstract => q[compose system recipe from abstract node],
usage_desc => q[%c compose %o NODE [NODE...]],
};
sub description
{
<<'DESCRIPTION';
Compose a system recipe.
Resolve a recipe to build a system. Input is one or more abstract nodes
to resolve using a set of abstract classes, and output is one or more
recipies serialized in one or more formats.
DESCRIPTION
}
sub command_names
{
qw(
compose
);
}
sub opt_spec
{
return (
[ "suite=s", "suite of classes to use (bullseye)" ],
[ "nodedir=s", "location of nodes (current dir)" ],
[ "classdir=s", "location of classes (XDG datadir + suite/classes)" ],
[ "datadir=s", "location containing nodes and classes" ],
[ "skeldir=s", "location of skeleton files (use builtin)" ],
[ "format=s", "serialize into these formats (preseed script)" ],
[ "nonfree", "enable use of contrib and non-free code" ],
[ "verbose|v", "verbose output" ],
);
}
sub execute ( $self, $opt, $args )
{
Log::Any::Adapter->set( 'Screen', default_level => 'info' )
if ( $opt->{verbose} );
my $world = use_module('Boxer::Task::Classify')->new(
( run in 0.692 second using v1.01-cache-2.11-cpan-39bf76dae61 )