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;
}