Skip to content

Commit

Permalink
Remove --dependency-cpan option and add --cpanm option to spvmdeps co…
Browse files Browse the repository at this point in the history
…mmand.
  • Loading branch information
yuki-kimoto committed Jan 8, 2025
1 parent 8435c7f commit 25005dc
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 30 deletions.
22 changes: 9 additions & 13 deletions lib/SPVM/Builder/DependencyAnalyzer.pm
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ sub dump_dependency {
return $dependency;
}

sub dump_dependency_cpan {
sub dump_cpanm_commands {
my ($class, $script_name) = @_;

my $info = SPVM::Builder::ScriptInfo->new(script_name => $script_name);
Expand All @@ -82,37 +82,33 @@ sub dump_dependency_cpan {

my $class_names = $info->get_class_names;

my $dependency_infos = [];
my $cpanm_commands = [];

for my $class_name (sort @$class_names) {

my $basic_type = $runtime->get_basic_type_by_name($class_name);

my $version_string = $basic_type->get_version_string;

my $dependency_info;
my $cpanm_command = "cpanm ";

if ($class_name eq "SPVM") {
$dependency_info = "SPVM";
$cpanm_command .= "SPVM";
}
else {
$dependency_info = "SPVM::$class_name";
$cpanm_command .= "SPVM::$class_name";
}

if (length $version_string) {
$dependency_info .= " $version_string";
$cpanm_command .= "\@$version_string";
}

push @$dependency_infos, $dependency_info;
push @$cpanm_commands, $cpanm_command;
}

my $spvm_version_string = $runtime->get_spvm_version_string;

unshift @$dependency_infos, "SPVM $spvm_version_string";

my $dependency_cpan = join("\x0A", @$dependency_infos) . "\x0A";
my $cpanm_commands_string = join("\x0A", @$cpanm_commands) . "\x0A";

return $dependency_cpan;
return $cpanm_commands_string;
}

1;
Expand Down
22 changes: 11 additions & 11 deletions script/spvmdeps
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ SPVM::Builder::Util::getopt
'o|output=s' => \my $output_file,
'resource-info' => \my $show_resource_info,
'dependency' => \my $show_dependency,
'dependency-cpan' => \my $show_dependency_cpan,
'cpanm' => \my $cpanm,
;

if ($help) {
Expand Down Expand Up @@ -67,13 +67,13 @@ elsif ($show_dependency) {
print $dependency;
exit 0;
}
elsif ($show_dependency_cpan) {
elsif ($cpanm) {

unless (defined $script_name) {
die "[spvmdeps command]--dependency option needs <script_name>."
}

my $dependency_cpan = SPVM::Builder::DependencyAnalyzer->dump_dependency_cpan($script_name);
my $dependency_cpan = SPVM::Builder::DependencyAnalyzer->dump_cpanm_commands($script_name);

print $dependency_cpan;
exit 0;
Expand Down Expand Up @@ -103,7 +103,7 @@ The spvmdeps command generates an executable file from SPVM classes.
-I, --include-dir <directory> Adds a include directory
--resource-info Show config files of dependent resources
--dependency Show dependent classes and their versions
--dependency-cpan Show dependent cpan modules and their versions
--cpanm Prints cpanm commands with dependent cpan modules and their versions

=head1 Details

Expand Down Expand Up @@ -217,18 +217,18 @@ Output Example:
Regex 0.980
Foo

=head2 --dependency-cpan
=head2 --cpanm

--dependency-cpan
--cpanm

Shows all dependent cpan modules and their versions.
Prints cpanm commands with all dependent cpan modules and their versions.

Output Example:

SPVM 1.001
SPVM::Sys 1.201
SPVM::Regex 0.980
SPVM::Foo
cpanm SPVM@1.001
cpanm SPVM::Sys@1.201
cpanm SPVM::Regex@0.980
cpanm SPVM::Foo

=head1 lib Directive

Expand Down
12 changes: 6 additions & 6 deletions t/04_spvmcc/spvmdeps.t
Original file line number Diff line number Diff line change
Expand Up @@ -65,15 +65,15 @@ my $dev_null = File::Spec->devnull;
}

{
# --dependency-cpan
# --cpanm
{
my $spvmcc_cmd = qq($^X -Mblib blib/script/spvmdeps -I $test_dir/lib/SPVM -I t/02_vm/lib/SPVM --dependency-cpan t/04_spvmcc/script/myapp.spvm);
my $spvmcc_cmd = qq($^X -Mblib blib/script/spvmdeps -I $test_dir/lib/SPVM -I t/02_vm/lib/SPVM --cpanm t/04_spvmcc/script/myapp.spvm);
my $output = `$spvmcc_cmd`;

like($output, qr|^SPVM [\.\d]+$|m);
like($output, qr|^SPVM::TestCase::NativeAPI2 1\.002$|m);
like($output, qr|^SPVM::TestCase::Precompile 2\.005$|m);
like($output, qr|^SPVM::Byte$|m);
like($output, qr|^cpanm SPVM\@[\.\d]+$|m);
like($output, qr|^cpanm SPVM::TestCase::NativeAPI2\@1\.002$|m);
like($output, qr|^cpanm SPVM::TestCase::Precompile\@2\.005$|m);
like($output, qr|^cpanm SPVM::Byte$|m);
like($output, qr|\x0A$|s);
}
}
Expand Down

0 comments on commit 25005dc

Please sign in to comment.