[arch-projects] [dbscripts] checkpkg, find-libdeps, finddeps, lddd: Use libremessages to add help text

Luke Shumaker lukeshu at lukeshu.com
Sun Aug 26 22:43:41 UTC 2018


From: Luke Shumaker <lukeshu at parabola.nu>

---
On Sat, 25 Aug 2018 07:14:34 -0400,
Jelle van der Waa wrote:
> This patch series intends to be an RFC for adding man pages for every
> tool provided by devtools. The first man page for lddd is written in
> mdoc and is lacking a way to reduce duplication of common headers such
> as BUGS/AUTHORS.

I've written more detailed usage-text for several of the commands.  I
haven't submitted it upstream to you before; because you don't have
the `print`, `prose`, and `flag` localization & formatting functions
that I used.

However, feel free to steal some of the language I used :)

 checkpkg.in     | 27 +++++++++++++++++++++++++--
 find-libdeps.in | 28 ++++++++++++++++++++++++----
 finddeps.in     | 18 ++++++++++++------
 lddd.in         | 18 +++++++++++++++++-
 4 files changed, 78 insertions(+), 13 deletions(-)

diff --git a/checkpkg.in b/checkpkg.in
index e0e1f83..cfec71e 100644
--- a/checkpkg.in
+++ b/checkpkg.in
@@ -3,7 +3,28 @@
 
 shopt -s extglob
 
-m4_include(lib/common.sh)
+. "$(librelib messages)"
+
+usage() {
+	print 'Usage: %s [-h]' "${0##*/}"
+	print 'Compare a locally built a package with the one in the repositories.'
+	echo
+	prose 'This should be run from a directory containing a
+	       PKGBUILD.  It searches for a locally built package
+	       corresponding to the PKGBUILD, and downloads the last
+	       version of that package from the pacman repositories.
+	       It then compares the list of .so files provided by each
+	       version of the package.  It does this for each part of
+	       a split package.'
+}
+
+if [[ $1 = '-h' ]]; then
+	usage
+	exit 0
+elif [[ $# -gt 0 ]]; then
+	usage >&2
+	exit 1
+fi
 
 # Source makepkg.conf; fail if it is not found
 if [[ -r '/etc/makepkg.conf' ]]; then
@@ -23,7 +44,9 @@ elif [[ -r "$HOME/.makepkg.conf" ]]; then
 fi
 
 if [[ ! -f PKGBUILD ]]; then
-	die 'This must be run in the directory of a built package.'
+	error 'This must be run in the directory of a built package.'
+	usage >&2
+	exit 1
 fi
 
 # shellcheck source=PKGBUILD.proto
diff --git a/find-libdeps.in b/find-libdeps.in
index 1fb1fdf..cb68237 100644
--- a/find-libdeps.in
+++ b/find-libdeps.in
@@ -1,7 +1,7 @@
 #!/bin/bash
 # License: Unspecified
 
-m4_include(lib/common.sh)
+. "$(librelib messages)"
 
 set -e
 shopt -s extglob
@@ -20,12 +20,32 @@ case $script_mode in
 	*) die "Unknown mode %s" "$script_mode" ;;
 esac
 
+usage() {
+	print "Usage: find-lib(deps|provides) [options] <package file|extracted package dir>"
+	print "Find library dependencies or provides of a package."
+	echo
+	prose 'Prints a list of library dependencies in the format:'
+	echo
+	print '    <soname>=<soversion>-<soarch>'
+	echo
+	prose "Where <soversion> is the shared library version, or
+	      <soname> repeated if there is no version attached; and
+	      <soarch> is the architecture of the library (either \`32\`
+	      or \`64\`, based on the ELF Class)."
+	echo
+	print "Options:"
+	flag "--ignore-internal" "Ignore internal libraries; libraries
+	                          without a version attached"
+	flag "-h"                "Show this message"
+}
 if [[ -z $1 ]]; then
-	echo "${0##*/} [options] <package file|extracted package dir>"
-	echo "Options:"
-	echo "    --ignore-internal      ignore internal libraries"
+	usage >&2
 	exit 1
 fi
+if [[ $1 = '-h' ]]; then
+	usage
+	exit 0
+fi
 
 if [[ -d $1 ]]; then
 	pushd "$1" >/dev/null
diff --git a/finddeps.in b/finddeps.in
index 2a085e5..5f89b55 100644
--- a/finddeps.in
+++ b/finddeps.in
@@ -4,18 +4,24 @@
 #
 # License: Unspecified
 
-m4_include(lib/common.sh)
+. "$(librelib messages)"
 
 match=$1
 
+usage() {
+	print 'Usage: %s <depname>' "${0##*/}"
+	print 'Find packages that depend on a given depname.'
+	echo
+	prose 'Run this script from the top-level directory of your ABS tree.'
+}
 if [[ -z $match ]]; then
-	echo 'Usage: finddeps <depname>'
-	echo ''
-	echo 'Find packages that depend on a given depname.'
-	echo 'Run this script from the top-level directory of your ABS tree.'
-	echo ''
+	usage >&2
 	exit 1
 fi
+if [[ $match = '-h' ]]; then
+	usage
+	exit 0
+fi
 
 find . -type d | while read -r d; do
 	if [[ -f "$d/PKGBUILD" ]]; then
diff --git a/lddd.in b/lddd.in
index 908923b..4c6871c 100644
--- a/lddd.in
+++ b/lddd.in
@@ -4,7 +4,23 @@
 #
 # License: Unspecified
 
-m4_include(lib/common.sh)
+. "$(librelib messages)"
+
+usage() {
+	print "Usage: %s [-h]" "${0##*/}"
+	print "Find broken library links on your machine."
+	echo
+	prose "Scans \$PATH and library directories for ELF files with
+	       references to missing shared libraries."
+}
+
+if [[ $1 = '-h' ]]; then
+	usage
+	exit 0
+elif [[ $# -gt 0 ]]; then
+	usage >&2
+	exit 1
+fi
 
 ifs=$IFS
 IFS="${IFS}:"
-- 
Happy hacking,
~ Luke Shumaker

2.18.0


More information about the arch-projects mailing list