mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-21 23:38:49 -05:00
makepkg: Move parseopts from library to libmakepkg
parseopts is used in makepkg and other scripts such as pacman-key as a getopt replacement. Instead of including it in those scripts via a macro, move it to libmakepkg/util/parseopts.sh and have scripts source this file where appropriate. To keep the parseopts test, a new variable was introduced: PM_LIBMAKEPKG_DIR Signed-off-by: Alad Wenter <alad@archlinux.info> Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
dfc78129be
commit
1f8f0bd9ac
@ -39,7 +39,8 @@ TEST_EXTENSIONS = .py
|
||||
AM_TESTS_ENVIRONMENT = \
|
||||
PMTEST_UTIL_DIR=$(top_builddir)/src/util/; export PMTEST_UTIL_DIR; \
|
||||
PMTEST_SCRIPT_DIR=$(top_builddir)/scripts/; export PMTEST_SCRIPT_DIR; \
|
||||
PMTEST_SCRIPTLIB_DIR=$(top_srcdir)/scripts/library/; export PMTEST_SCRIPTLIB_DIR;
|
||||
PMTEST_SCRIPTLIB_DIR=$(top_srcdir)/scripts/library/; export PMTEST_SCRIPTLIB_DIR; \
|
||||
PMTEST_LIBMAKEPKG_DIR=$(top_builddir)/scripts/libmakepkg/; export PMTEST_LIBMAKEPKG_DIR;
|
||||
LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \
|
||||
$(top_srcdir)/build-aux/tap-driver.sh
|
||||
PY_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \
|
||||
|
2
scripts/.gitignore
vendored
2
scripts/.gitignore
vendored
@ -1,9 +1,9 @@
|
||||
makepkg
|
||||
makepkg-template
|
||||
makepkg-wrapper
|
||||
pacman-db-upgrade
|
||||
pacman-key
|
||||
pkgdelta
|
||||
repo-add
|
||||
repo-elephant
|
||||
repo-remove
|
||||
*-wrapper
|
||||
|
@ -36,7 +36,6 @@ EXTRA_DIST = \
|
||||
|
||||
LIBRARY = \
|
||||
library/output_format.sh \
|
||||
library/parseopts.sh \
|
||||
library/human_to_size.sh \
|
||||
library/size_to_human.sh \
|
||||
library/term_colors.sh
|
||||
@ -97,6 +96,7 @@ LIBMAKEPKG_IN = \
|
||||
libmakepkg/util.sh \
|
||||
libmakepkg/util/message.sh \
|
||||
libmakepkg/util/option.sh \
|
||||
libmakepkg/util/parseopts.sh \
|
||||
libmakepkg/util/pkgbuild.sh \
|
||||
libmakepkg/util/source.sh \
|
||||
libmakepkg/util/util.sh
|
||||
@ -105,7 +105,10 @@ LIBMAKEPKG_DIST = \
|
||||
$(addsuffix .in, $(LIBMAKEPKG_IN))
|
||||
|
||||
WRAPPER = \
|
||||
makepkg-wrapper
|
||||
makepkg-wrapper \
|
||||
pacman-db-upgrade-wrapper \
|
||||
pacman-key-wrapper \
|
||||
pkgdelta-wrapper
|
||||
|
||||
COMPLETION_IN = \
|
||||
completion/bash_completion \
|
||||
@ -180,7 +183,6 @@ all-am: $(COMPLETION_IN)
|
||||
makepkg: \
|
||||
$(srcdir)/makepkg.sh.in \
|
||||
$(srcdir)/wrapper.sh.in \
|
||||
$(srcdir)/library/parseopts.sh \
|
||||
$(LIBMAKEPKG_IN)
|
||||
|
||||
makepkg-template: \
|
||||
@ -197,13 +199,11 @@ pacman-db-upgrade: \
|
||||
|
||||
pacman-key: \
|
||||
$(srcdir)/pacman-key.sh.in \
|
||||
$(srcdir)/library/output_format.sh \
|
||||
$(srcdir)/library/parseopts.sh
|
||||
$(srcdir)/library/output_format.sh
|
||||
|
||||
pkgdelta: \
|
||||
$(srcdir)/pkgdelta.sh.in \
|
||||
$(srcdir)/library/output_format.sh \
|
||||
$(srcdir)/library/parseopts.sh
|
||||
$(srcdir)/library/output_format.sh
|
||||
|
||||
repo-add: \
|
||||
$(srcdir)/repo-add.sh.in \
|
||||
|
@ -1,4 +1,40 @@
|
||||
# getopt-like parser
|
||||
#!/bin/bash
|
||||
#
|
||||
# parseopts.sh - getopt_long-like parser
|
||||
#
|
||||
# Copyright (c) 2012-2016 Pacman Development Team <pacman-dev@archlinux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# A getopt_long-like parser which portably supports longopts and
|
||||
# shortopts with some GNU extensions. It does not allow for options
|
||||
# with optional arguments. For both short and long opts, options
|
||||
# requiring an argument should be suffixed with a colon. After the
|
||||
# first argument containing the short opts, any number of valid long
|
||||
# opts may be be passed. The end of the options delimiter must then be
|
||||
# added, followed by the user arguments to the calling program.
|
||||
#
|
||||
# Recommended Usage:
|
||||
# OPT_SHORT='fb:z'
|
||||
# OPT_LONG=('foo' 'bar:' 'baz')
|
||||
# if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then
|
||||
# exit 1
|
||||
# fi
|
||||
# set -- "${OPTRET[@]}"
|
||||
# Returns:
|
||||
# 0: parse success
|
||||
# 1: parse failure (error message supplied)
|
||||
parseopts() {
|
||||
local opt= optarg= i= shortopts=$1
|
||||
local -a longopts=() unused_argv=()
|
||||
@ -34,7 +70,7 @@ parseopts() {
|
||||
return 255 ;;
|
||||
*)
|
||||
# fail, ambiguous match
|
||||
printf "@SCRIPTNAME@: $(gettext "option '%s' is ambiguous; possibilities:")" "--$1"
|
||||
printf "${0##*/}: $(gettext "option '%s' is ambiguous; possibilities:")" "--$1"
|
||||
printf " '%s'" "${longmatch[@]%:}"
|
||||
printf '\n'
|
||||
return 254 ;;
|
||||
@ -53,7 +89,7 @@ parseopts() {
|
||||
|
||||
# option doesn't exist
|
||||
if [[ $shortopts != *$opt* ]]; then
|
||||
printf "@SCRIPTNAME@: $(gettext "invalid option") -- '%s'\n" "$opt" >&2
|
||||
printf "${0##*/}: $(gettext "invalid option") -- '%s'\n" "$opt" >&2
|
||||
OPTRET=(--)
|
||||
return 1
|
||||
fi
|
||||
@ -72,7 +108,7 @@ parseopts() {
|
||||
break
|
||||
# parse failure
|
||||
else
|
||||
printf "@SCRIPTNAME@: $(gettext "option requires an argument") -- '%s'\n" "$opt" >&2
|
||||
printf "${0##*/}: $(gettext "option requires an argument") -- '%s'\n" "$opt" >&2
|
||||
OPTRET=(--)
|
||||
return 1
|
||||
fi
|
||||
@ -86,7 +122,7 @@ parseopts() {
|
||||
0)
|
||||
# parse failure
|
||||
if [[ $optarg ]]; then
|
||||
printf "@SCRIPTNAME@: $(gettext "option '%s' does not allow an argument")\n" "--$opt" >&2
|
||||
printf "${0##*/}: $(gettext "option '%s' does not allow an argument")\n" "--$opt" >&2
|
||||
OPTRET=(--)
|
||||
return 1
|
||||
# --longopt
|
||||
@ -104,7 +140,7 @@ parseopts() {
|
||||
shift
|
||||
# parse failure
|
||||
else
|
||||
printf "@SCRIPTNAME@: $(gettext "option '%s' requires an argument")\n" "--$opt" >&2
|
||||
printf "${0##*/}: $(gettext "option '%s' requires an argument")\n" "--$opt" >&2
|
||||
OPTRET=(--)
|
||||
return 1
|
||||
fi
|
||||
@ -116,7 +152,7 @@ parseopts() {
|
||||
;;
|
||||
255)
|
||||
# parse failure
|
||||
printf "@SCRIPTNAME@: $(gettext "invalid option") '--%s'\n" "$opt" >&2
|
||||
printf "${0##*/}: $(gettext "invalid option") '--%s'\n" "$opt" >&2
|
||||
OPTRET=(--)
|
||||
return 1
|
||||
;;
|
@ -8,26 +8,6 @@ stdout and can be silenced by defining 'QUIET'. The 'warning' and 'error'
|
||||
functions print to stderr with the appropriate prefix added to the
|
||||
message.
|
||||
|
||||
parseopts.sh:
|
||||
A getopt_long-like parser which portably supports longopts and shortopts
|
||||
with some GNU extensions. It does not allow for options with optional
|
||||
arguments. For both short and long opts, options requiring an argument
|
||||
should be suffixed with a colon. After the first argument containing
|
||||
the short opts, any number of valid long opts may be be passed. The end
|
||||
of the options delimiter must then be added, followed by the user arguments
|
||||
to the calling program.
|
||||
|
||||
Recommended Usage:
|
||||
OPT_SHORT='fb:z'
|
||||
OPT_LONG=('foo' 'bar:' 'baz')
|
||||
if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then
|
||||
exit 1
|
||||
fi
|
||||
set -- "${OPTRET[@]}"
|
||||
Returns:
|
||||
0: parse success
|
||||
1: parse failure (error message supplied)
|
||||
|
||||
human_to_size.sh:
|
||||
A function to convert human readable sizes (such as "5.3 GiB") to raw byte
|
||||
equivalents. base10 and base2 suffixes are supported, case sensitively. If
|
||||
|
@ -1153,8 +1153,6 @@ run_split_packaging() {
|
||||
pkgname=("${pkgname_backup[@]}")
|
||||
}
|
||||
|
||||
m4_include(library/parseopts.sh)
|
||||
|
||||
usage() {
|
||||
printf "makepkg (pacman) %s\n" "$makepkg_version"
|
||||
echo
|
||||
|
@ -30,7 +30,10 @@ declare -r myver='@PACKAGE_VERSION@'
|
||||
|
||||
m4_include(library/output_format.sh)
|
||||
|
||||
m4_include(library/parseopts.sh)
|
||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
|
||||
|
||||
# Import parseopts.sh
|
||||
source "$LIBRARY"/util/parseopts.sh
|
||||
|
||||
usage() {
|
||||
printf "pacman-db-upgrade (pacman) %s\n" "${myver}"
|
||||
|
@ -26,6 +26,11 @@ export TEXTDOMAINDIR='@localedir@'
|
||||
|
||||
declare -r myver="@PACKAGE_VERSION@"
|
||||
|
||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
|
||||
|
||||
# Import parseopts.sh
|
||||
source "$LIBRARY"/util/parseopts.sh
|
||||
|
||||
# Options
|
||||
ADD=0
|
||||
DELETE=0
|
||||
@ -50,8 +55,6 @@ DEFAULT_KEYSERVER='hkp://pool.sks-keyservers.net'
|
||||
|
||||
m4_include(library/output_format.sh)
|
||||
|
||||
m4_include(library/parseopts.sh)
|
||||
|
||||
usage() {
|
||||
printf "pacman-key (pacman) %s\n" ${myver}
|
||||
echo
|
||||
|
@ -28,6 +28,12 @@ export TEXTDOMAINDIR='@localedir@'
|
||||
|
||||
declare -r myver='@PACKAGE_VERSION@'
|
||||
|
||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
|
||||
|
||||
# Import parseopts.sh
|
||||
source "$LIBRARY"/util/parseopts.sh
|
||||
|
||||
# Options
|
||||
QUIET=0
|
||||
USE_COLOR='y'
|
||||
|
||||
@ -41,7 +47,6 @@ max_delta_size=70
|
||||
# ensure we have a sane umask set
|
||||
umask 0022
|
||||
|
||||
m4_include(library/parseopts.sh)
|
||||
m4_include(library/output_format.sh)
|
||||
|
||||
# print usage instructions
|
||||
|
@ -49,6 +49,6 @@ scripts/libmakepkg/tidy/staticlibs.sh.in
|
||||
scripts/libmakepkg/tidy/strip.sh.in
|
||||
scripts/libmakepkg/tidy/zipman.sh.in
|
||||
scripts/libmakepkg/util/message.sh.in
|
||||
scripts/libmakepkg/util/parseopts.sh.in
|
||||
scripts/libmakepkg/util/source.sh.in
|
||||
scripts/library/output_format.sh
|
||||
scripts/library/parseopts.sh
|
||||
|
@ -3,7 +3,7 @@
|
||||
source "$(dirname "$0")"/../tap.sh || exit 1
|
||||
|
||||
# source the library function
|
||||
lib=${1:-${PMTEST_SCRIPTLIB_DIR}parseopts.sh}
|
||||
lib=${1:-${PMTEST_LIBMAKEPKG_DIR}util/parseopts.sh}
|
||||
if [[ -z $lib || ! -f $lib ]]; then
|
||||
tap_bail "parseopts library ($lib) could not be located"
|
||||
exit 1
|
||||
|
Loading…
Reference in New Issue
Block a user