On Thu, Sep 10, 2020 at 04:23:03PM -0600, Aaron Bieber wrote:
> Hi,
>
> I have been sitting on this diff for a bit. It enables portgen to take a
> version. For example:
>
> $ portgen go github.com/ipfs/[email protected]
>
> This is handy when our logic to pick the version number prevents you
> from grabbing rc versions.
>
> It will also enable easier upgrading of GOMOD vars (that's another diff
> that paco@ has put together).
>
> OK?
>
> Cheers,
> Aaron
>
> diff bd5892339f98bf561050a7dfa529498b3770873d /usr/ports
> blob - 16116f9b0525e89d7f4b115e7517cb913f107760
> file + infrastructure/lib/OpenBSD/PortGen/Port/Go.pm
> --- infrastructure/lib/OpenBSD/PortGen/Port/Go.pm
> +++ infrastructure/lib/OpenBSD/PortGen/Port/Go.pm
> @@ -64,16 +64,31 @@ sub _go_lic_info
>
> sub _go_determine_name
> {
> - # Some modules end in "v1" or "v2", if we find one of these, we need
> - # to set PKGNAME to something up a level
> my ( $self, $module ) = @_;
> - my $json = $self->get_json( $module . '/@latest' );
> + my $json = {};
>
> + # Versions can be specified on the command line:
> + if ($module =~ m/\@v/) {
Why don't you just "get_json" if it has a version already, not looking
for @latest? It seems like that would do a bit of validation that the
version you tried exists and such.
$json = $self->get_json($module);
$module =~ s/@.*//;
> + my @parts = split("@", $module);
I might name these `my ($m, $v) = split /@/, $module, 2;` because I
think that's easier to follow than $parts[1].
> + $module = $parts[0];
> + $json->{Module} = $parts[0];
> + $json->{Version} = $parts[1];
> +
> + # This is used in get_ver_info when we have already determined
> + # the version to use.
> + $self->{ModName} = $parts[0];
> + $self->{ModVersion} = $parts[1];
Should we store these things in $self out of $json if we got them? What
does grabbing all the versions do if we've already gotten one?
> + } else {
> + $json = $self->get_json( $module . '/@latest' );
> + }
> +
> if ($json->{Version} =~ m/incompatible/) {
> my $msg = "${module} $json->{Version} is incompatible with Go
> modules.";
> croak $msg;
> }
>
> + # Some modules end in "v1" or "v2", if we find one of these, we need
> + # to set PKGNAME to something up a level
> if ($module =~ m/v\d$/) {
> $json->{Name} = ( split '/', $module )[-2];
> } else {
> @@ -212,6 +227,11 @@ sub _go_mod_normalize
> sub get_ver_info
> {
> my ( $self, $module ) = @_;
> +
> + if (defined $self->{ModVersion} && defined $self->{ModName}) {
> + return { Module => $self->{ModName}, Version =>
> $self->{ModVersion} };
> + }
> +
> my $version_list = $self->get( $module . '/@v/list' );
> my $version = "v0.0.0";
> my $ret;
>
--
andrew - http://afresh1.com
If your computer says, "Printer out of Paper," this problem cannot
be resolved by continuously clicking the "OK" button.