App-CPAN-Get

 view release on metacpan or  search on metacpan

Get/Utils.pm  view on Meta::CPAN

package App::CPAN::Get::Utils;

use base qw(Exporter);
use strict;
use warnings;

use Readonly;

Readonly::Array our @EXPORT_OK => qw(process_module_name_and_version);

our $VERSION = 0.14;

# Code from Menlo::CLI::Compat
sub process_module_name_and_version {
	my $module_string = shift;

	# Plack@1.2 -> Plack~"==1.2"
	# BUT don't expand @ in git URLs
	$module_string =~ s/^([A-Za-z0-9_:]+)@([v\d\._]+)$/$1~== $2/;

	# Plack~1.20, DBI~"> 1.0, <= 2.0"
	my ($module_name, $module_version_range);
	if ($module_string =~ /\~[v\d\._,\!<>= ]+$/) {
		($module_name, $module_version_range)
			= split '~', $module_string, 2;
	} else {
		$module_name = $module_string;
	}

	return ($module_name, $module_version_range);
}

1;

__END__

=pod

=encoding utf8

=head1 NAME

App::CPAN::Get::Utils - Utilities for App::CPAN::Get.

=head1 SYNOPSIS

 use App::CPAN::Get::Utils qw(process_module_name_and_version);

 my ($module_name, $module_version_range) = process_module_name_and_version($module_string);

=head1 SUBROUTINES

=head2 C<process_module_name_and_version>

 my ($module_name, $module_version_range) = process_module_name_and_version($module_string);

Process module name string.

Returns array with module name and module version range strings.

=head1 EXAMPLE

=for comment filename=process_module_name_and_version.pl

 use strict;
 use warnings;

 use App::CPAN::Get::Utils qw(process_module_name_and_version);

 if (@ARGV < 1) {
         print STDERR "Usage: $0 module_name[\@module_version]\n";
         exit 1;
 }
 my $module_name_and_version = $ARGV[0];

 my ($module_name, $module_version_range) = process_module_name_and_version($module_name_and_version);

 print "Module string from input: $module_name_and_version\n";



( run in 0.848 second using v1.01-cache-2.11-cpan-97f6503c9c8 )