This adds a -p option to pkg_info to show the PackageRepositorys
being used.

Inspired by trying to parse /etc/pkg.conf with some awk and quickly
realized that was the wrong way to solve my problem. I then wrote
some perl that reached into OpenBSD:: internals, but concluded it'd
be much cleaner for external consumers to just invoke pkg_info.


Index: pkg_info.1
===================================================================
RCS file: /cvs/src/usr.sbin/pkg_add/pkg_info.1,v
retrieving revision 1.50
diff -u -p -d -r1.50 pkg_info.1
--- pkg_info.1  8 Sep 2014 01:27:55 -0000       1.50
+++ pkg_info.1  23 Jun 2015 22:05:53 -0000
@@ -24,7 +24,7 @@
 .Sh SYNOPSIS
 .Nm pkg_info
 .Bk -words
-.Op Fl AaCcdfIKLMmPqRSstUv
+.Op Fl AaCcdfIKLMmPpqRSstUv
 .Op Fl E Ar filename
 .Op Fl e Ar pkg-name
 .Op Fl l Ar str
@@ -151,6 +151,8 @@ Show the
 .Xr pkgpath 7
 for each package.
 You can easily build a subdirlist with this.
+.It Fl p
+Show the actual package paths being used.
 .It Fl Q Ar query
 Show all packages in $PKG_PATH which match the given
 .Ar query .
Index: OpenBSD/PackageRepositoryList.pm
===================================================================
RCS file: /cvs/src/usr.sbin/pkg_add/OpenBSD/PackageRepositoryList.pm,v
retrieving revision 1.29
diff -u -p -d -r1.29 PackageRepositoryList.pm
--- OpenBSD/PackageRepositoryList.pm    3 Feb 2015 10:26:29 -0000       1.29
+++ OpenBSD/PackageRepositoryList.pm    23 Jun 2015 22:06:49 -0000
@@ -100,4 +100,14 @@ sub print_without_src
        return join(':', @l);
 }
 
+sub print
+{
+       my $self = shift;
+       my @l = ();
+       for my $repo (@{$self->{l}}) {
+               push(@l, $repo->url);
+       }
+       return join("\n", @l);
+}
+
 1;
Index: OpenBSD/PkgInfo.pm
===================================================================
RCS file: /cvs/src/usr.sbin/pkg_add/OpenBSD/PkgInfo.pm,v
retrieving revision 1.35
diff -u -p -d -r1.35 PkgInfo.pm
--- OpenBSD/PkgInfo.pm  6 Apr 2015 12:19:35 -0000       1.35
+++ OpenBSD/PkgInfo.pm  23 Jun 2015 22:05:53 -0000
@@ -557,7 +557,7 @@ sub parse_and_run
                    }
            };
        $state->{no_exports} = 1;
-       $state->handle_options('cCdfF:hIKLmPQ:qr:RsSUe:E:Ml:aAt',
+       $state->handle_options('cCdfF:hIKLmpPQ:qr:RsSUe:E:Ml:aAt',
            '[-AaCcdfIKLMmPqRSstUv] [-D nolock][-E filename] [-e pkg-name] ',
            '[-l str] [-Q query] [-r pkgspec] [pkg-name] [...]');
 
@@ -610,6 +609,13 @@ sub parse_and_run
                            is_installed($p) ? "#1 (installed)" : "#1", $p);
                }
 
+               return 0;
+       }
+
+       if ($state->opt('p')) {
+               require OpenBSD::PackageLocator;
+               OpenBSD::PackageLocator->build_default_path($state);
+               $state->say(OpenBSD::PackageLocator->default_path()->print());
                return 0;
        }
 

Reply via email to