The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!perl
use strict;
use SPVM();
SPVM::Builder::Util::getopt
'h|help' => \my $help,
'v|version' => \my $show_version,
'q|quiet' => \my $quiet,
'f|force' => \my $force,
'native=s' => \my $native,
'precompile' => \my $precompile,
'resource' => \my $resource,
'only-lib-files' => \my $only_lib_files,
'no-pm-file' => \my $no_pm_file,
'genlib' => \my $genlib,
'user-name=s' => \my $user_name,
'user-email=s' => \my $user_email,
;
if ($help) {
print SPVM::Builder::Util::extract_usage;
}
elsif ($show_version) {
my $version_string = "spvmdist v$SPVM::VERSION";
print "$version_string\n";
}
else {
my ($class_name, $output_dir) = @ARGV;
unless (defined $class_name) {
die SPVM::Builder::Util::extract_usage;
}
if ($genlib) {
$only_lib_files = 1;
$no_pm_file = 1;
}
my $gendist= SPVM::Dist->new(
class_name => $class_name,
quiet => $quiet,
force => $force,
output_dir => $output_dir,
native => $native,
precompile => $precompile,
only_lib_files => $only_lib_files,
no_pm_file => $no_pm_file,
resource => $resource,
user_name => $user_name,
user_email => $user_email,
);
$gendist->generate_dist;
}
=encoding utf8
=head1 Name
spvmdist - Generating SPVM Distribution
=head1 Usage
usage: spvmdist [<options>] <class_name> [<dir>]
spvmdist Foo
spvmdist Foo My-Foo
spvmdist Foo::Bar::Baz
spvmdist --native c Foo
spvmdist --native c++ Foo
spvmdist --precompile Foo
spvmdist --resource Foo
options:
-h, --help Show this message
-v, --version Show the version
-q, --quiet Quiet output
-f, --force Force to generate files
--native=<language> Add native files and setting
--precompile Add precompile setting
--only-lib-files Output only the files in "lib" directory
--no-pm-file Don't output Perl module(.pm) file
--resource Output files for a resource distribution
--genlib Shortcut for --only-lib-files --no-pm-file
--user-name=<name> User name
--user-email=<email> User email
=head1 Description
C<spvmdist> is the command to generate a SPVM distribution.