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.

Reply via email to