Add new `includes' module for exploring the bsdconfig(8) API.
This commit is contained in:
parent
23fc6e1652
commit
ad8f8a1f5e
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=258400
@ -6,6 +6,7 @@ SUBDIR= console \
|
|||||||
dot \
|
dot \
|
||||||
examples \
|
examples \
|
||||||
include \
|
include \
|
||||||
|
includes \
|
||||||
mouse \
|
mouse \
|
||||||
networking \
|
networking \
|
||||||
packages \
|
packages \
|
||||||
|
56
usr.sbin/bsdconfig/includes/INDEX
Normal file
56
usr.sbin/bsdconfig/includes/INDEX
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
# Copyright (c) 2013 Devin Teske
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||||
|
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
# SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
|
||||||
|
#
|
||||||
|
# Title that will be shown in the bsdconfig menu.
|
||||||
|
#
|
||||||
|
menu_title=""
|
||||||
|
|
||||||
|
#
|
||||||
|
# A short descriptive line shown at the bottom of the bsdconfig menu. keep it
|
||||||
|
# short because any line longer than the terminal width will be truncated.
|
||||||
|
#
|
||||||
|
menu_help=""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Two-part variable that defines an action to take when `keyword' is passed on
|
||||||
|
# a bsdconfig command line. Variable takes the form "keyword|command" and
|
||||||
|
# multiple occurrences of the variable (with different `keyword's, or different
|
||||||
|
# `keyword's AND `command's) are allowed. If `command' begins with a '/' then
|
||||||
|
# the full path to the program is needed. If `command' begins with anything
|
||||||
|
# else it is a path relative to the directory this INDEX file is in. `keyword'
|
||||||
|
# can be i18n'ed but `command' is the name of a script.
|
||||||
|
#
|
||||||
|
menu_selection="includes|includes"
|
||||||
|
|
||||||
|
#
|
||||||
|
# ------------ Items below this line do NOT need i18n translation ------------
|
||||||
|
#
|
||||||
|
# Name of the program to be run when this menu choice is selected. If it begins
|
||||||
|
# with a '/' then the full path to the program is needed. If it begins with
|
||||||
|
# anything else it is a path relative to the directory this INDEX file is in.
|
||||||
|
#
|
||||||
|
menu_program=""
|
16
usr.sbin/bsdconfig/includes/Makefile
Normal file
16
usr.sbin/bsdconfig/includes/Makefile
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# $FreeBSD$
|
||||||
|
|
||||||
|
NO_OBJ=
|
||||||
|
|
||||||
|
SUBDIR= include
|
||||||
|
|
||||||
|
FILESDIR= ${LIBEXECDIR}/bsdconfig/includes
|
||||||
|
FILES= INDEX USAGE
|
||||||
|
|
||||||
|
SCRIPTSDIR= ${FILESDIR}
|
||||||
|
SCRIPTS= includes
|
||||||
|
|
||||||
|
beforeinstall:
|
||||||
|
mkdir -p ${DESTDIR}${FILESDIR}
|
||||||
|
|
||||||
|
.include <bsd.prog.mk>
|
66
usr.sbin/bsdconfig/includes/USAGE
Normal file
66
usr.sbin/bsdconfig/includes/USAGE
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# Copyright (c) 2013 Devin Teske
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||||
|
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
# SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
|
||||||
|
Usage: bsdconfig @PROGRAM_NAME@ [OPTIONS] [include ...]
|
||||||
|
|
||||||
|
OPTIONS:
|
||||||
|
-a Always use color even when output is not to a terminal.
|
||||||
|
-f Show functions for selected includes.
|
||||||
|
-F pattern
|
||||||
|
If `-f', only print functions matching pattern. Without `-f'
|
||||||
|
print only includes containing functions matching pattern.
|
||||||
|
-h Print this usage statement and exit.
|
||||||
|
-n Disable the use of color.
|
||||||
|
|
||||||
|
EXAMPLES:
|
||||||
|
View a list of available includes:
|
||||||
|
|
||||||
|
bsdconfig @PROGRAM_NAME@
|
||||||
|
|
||||||
|
View functions for all available includes (function names are
|
||||||
|
highlighted):
|
||||||
|
|
||||||
|
bsdconfig @PROGRAM_NAME@ -f
|
||||||
|
|
||||||
|
View functions with less(1) (function names are not highlighted):
|
||||||
|
|
||||||
|
bsdconfig @PROGRAM_NAME@ -f | less
|
||||||
|
|
||||||
|
View functions with less(1) and color:
|
||||||
|
|
||||||
|
bsdconfig @PROGRAM_NAME@ -af | less -R
|
||||||
|
|
||||||
|
View functions from `common.subr':
|
||||||
|
|
||||||
|
bsdconfig @PROGRAM_NAME@ common.subr
|
||||||
|
|
||||||
|
NB: The `-f' flag is implied when given an include.
|
||||||
|
|
||||||
|
Show only functions containing the word `show' in common.subr:
|
||||||
|
|
||||||
|
bsdconfig @PROGRAM_NAME@ -F show common
|
||||||
|
|
||||||
|
NB: The `.subr' suffix on the end of the include is optional.
|
11
usr.sbin/bsdconfig/includes/include/Makefile
Normal file
11
usr.sbin/bsdconfig/includes/include/Makefile
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# $FreeBSD$
|
||||||
|
|
||||||
|
NO_OBJ=
|
||||||
|
|
||||||
|
FILESDIR= ${LIBEXECDIR}/bsdconfig/includes/include
|
||||||
|
FILES= messages.subr
|
||||||
|
|
||||||
|
beforeinstall:
|
||||||
|
mkdir -p ${DESTDIR}${FILESDIR}
|
||||||
|
|
||||||
|
.include <bsd.prog.mk>
|
28
usr.sbin/bsdconfig/includes/include/messages.subr
Normal file
28
usr.sbin/bsdconfig/includes/include/messages.subr
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Copyright (c) 2013 Devin Teske
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||||
|
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
# SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
|
||||||
|
msg_functions_in="Functions in %s:"
|
||||||
|
msg_functions_in_matching="Functions in %s matching \`%s':"
|
161
usr.sbin/bsdconfig/includes/includes
Executable file
161
usr.sbin/bsdconfig/includes/includes
Executable file
@ -0,0 +1,161 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#-
|
||||||
|
# Copyright (c) 2013 Devin Teske
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||||
|
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
# SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
############################################################ INCLUDES
|
||||||
|
|
||||||
|
# Prevent common.subr from auto initializing debugging (this is not an inter-
|
||||||
|
# active utility that requires debugging).
|
||||||
|
#
|
||||||
|
DEBUG_SELF_INITIALIZE=NO
|
||||||
|
|
||||||
|
BSDCFG_SHARE="/usr/share/bsdconfig"
|
||||||
|
. $BSDCFG_SHARE/common.subr || exit 1
|
||||||
|
f_dprintf "%s: loading includes..." "$0"
|
||||||
|
|
||||||
|
BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="includes"
|
||||||
|
f_include_lang $BSDCFG_LIBE/include/messages.subr
|
||||||
|
f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
|
||||||
|
|
||||||
|
ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
|
||||||
|
[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
|
||||||
|
|
||||||
|
############################################################ GLOBALS
|
||||||
|
|
||||||
|
#
|
||||||
|
# Options
|
||||||
|
#
|
||||||
|
USE_COLOR=1
|
||||||
|
SHOW_FUNCS=
|
||||||
|
FUNC_PATTERN=
|
||||||
|
|
||||||
|
############################################################ FUNCTIONS
|
||||||
|
|
||||||
|
# show_functions $file
|
||||||
|
#
|
||||||
|
# Show the functions in the given include file.
|
||||||
|
#
|
||||||
|
show_include()
|
||||||
|
{
|
||||||
|
local file="${1#./}"
|
||||||
|
|
||||||
|
local pattern="${FUNC_PATTERN:-.*}"
|
||||||
|
output=$( awk -v use_color=${USE_COLOR:-0} -v re="$pattern" '
|
||||||
|
/^$/,/^#/ {
|
||||||
|
if ($0 ~ /^# f_/) {
|
||||||
|
if (!match($2, re)) next
|
||||||
|
if (use_color)
|
||||||
|
printf " %s[1;31m%s[0m%s\n",
|
||||||
|
substr($0, 2, RSTART),
|
||||||
|
substr($0, 2 + RSTART, RLENGTH),
|
||||||
|
substr($0, 2 + RSTART + RLENGTH)
|
||||||
|
else
|
||||||
|
print substr($0, 2)
|
||||||
|
print_more = substr($0, length($0)) == "\\"
|
||||||
|
}
|
||||||
|
while (print_more) {
|
||||||
|
getline
|
||||||
|
print substr($0, 2)
|
||||||
|
print_more = substr($0, length($0)) == "\\"
|
||||||
|
}
|
||||||
|
}' "$file" )
|
||||||
|
if [ "$output" ]; then
|
||||||
|
if [ ! "$SHOW_FUNCS" ]; then
|
||||||
|
echo "$file"
|
||||||
|
return $SUCCESS
|
||||||
|
fi
|
||||||
|
if [ "$FUNC_PATTERN" ]; then
|
||||||
|
printf "$msg_functions_in_matching\n" \
|
||||||
|
"$file" "$FUNC_PATTERN"
|
||||||
|
else
|
||||||
|
printf "$msg_functions_in\n" "$file"
|
||||||
|
fi
|
||||||
|
echo "$output"
|
||||||
|
echo # blank line to simplify awk(1)-based reparse
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
############################################################ MAIN
|
||||||
|
|
||||||
|
# Incorporate rc-file if it exists
|
||||||
|
[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc"
|
||||||
|
|
||||||
|
# Are we in a terminal?
|
||||||
|
[ -t 1 ] || USE_COLOR=
|
||||||
|
|
||||||
|
#
|
||||||
|
# Process command-line arguments
|
||||||
|
#
|
||||||
|
while getopts afF:hn flag; do
|
||||||
|
case "$flag" in
|
||||||
|
a) USE_COLOR=1 ;;
|
||||||
|
f) SHOW_FUNCS=1 ;;
|
||||||
|
F) FUNC_PATTERN="$OPTARG" ;;
|
||||||
|
n) USE_COLOR= ;;
|
||||||
|
h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $(( $OPTIND - 1 ))
|
||||||
|
|
||||||
|
# cd(1) to `share' dir so relative paths work for find and positional args
|
||||||
|
cd $BSDCFG_SHARE || f_die 1 "$msg_directory_not_found" "$BSDCFG_SHARE"
|
||||||
|
|
||||||
|
#
|
||||||
|
# If given an argument, operate on it specifically (implied `-f') and exit
|
||||||
|
#
|
||||||
|
[ $# -gt 0 ] && SHOW_FUNCS=1
|
||||||
|
for include in "$@"; do
|
||||||
|
# See if they've just omitted the `*.subr' suffix
|
||||||
|
[ -f "$include.subr" -a ! -f "$include" ] && include="$include.subr"
|
||||||
|
if [ ! -f "$include" ]; then
|
||||||
|
f_die 1 "$msg_no_such_file_or_directory" "$0" "$include"
|
||||||
|
elif [ ! -r "$include" ]; then
|
||||||
|
f_die 1 "$msg_permission_denied" "$0" "$include"
|
||||||
|
fi
|
||||||
|
show_include "$include" || f_die
|
||||||
|
done
|
||||||
|
|
||||||
|
# Exit if we processed some include arguments
|
||||||
|
[ $# -gt 0 ] && exit $SUCCESS
|
||||||
|
|
||||||
|
#
|
||||||
|
# Operate an all known include files
|
||||||
|
# NB: If we get this far, we had no include arguments
|
||||||
|
#
|
||||||
|
find -s . -type f -and -iname '*.subr' | while read file; do
|
||||||
|
if [ "$SHOW_FUNCS" -o "$FUNC_PATTERN" ]; then
|
||||||
|
show_include "$file"
|
||||||
|
else
|
||||||
|
echo "${file#./}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $SUCCESS
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# END
|
||||||
|
################################################################################
|
@ -179,7 +179,7 @@ f_debugging()
|
|||||||
f_getvar $VAR_DEBUG value && [ "$value" ]
|
f_getvar $VAR_DEBUG value && [ "$value" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# f_interactive()
|
# f_interactive
|
||||||
#
|
#
|
||||||
# Are we running interactively? Return error if $nonInteractive is set and non-
|
# Are we running interactively? Return error if $nonInteractive is set and non-
|
||||||
# NULL, otherwise return success.
|
# NULL, otherwise return success.
|
||||||
@ -190,7 +190,7 @@ f_interactive()
|
|||||||
! f_getvar $VAR_NONINTERACTIVE value || [ ! "$value" ]
|
! f_getvar $VAR_NONINTERACTIVE value || [ ! "$value" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# f_netinteractive()
|
# f_netinteractive
|
||||||
#
|
#
|
||||||
# Has the user specifically requested the network-portion of configuration and
|
# Has the user specifically requested the network-portion of configuration and
|
||||||
# setup to be performed interactively? Returns success if the user has asked
|
# setup to be performed interactively? Returns success if the user has asked
|
||||||
@ -205,7 +205,7 @@ f_netinteractive()
|
|||||||
f_getvar $VAR_NETINTERACTIVE value && [ "$value" ]
|
f_getvar $VAR_NETINTERACTIVE value && [ "$value" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# f_zfsinteractive()
|
# f_zfsinteractive
|
||||||
#
|
#
|
||||||
# Has the user specifically requested the ZFS-portion of configuration and
|
# Has the user specifically requested the ZFS-portion of configuration and
|
||||||
# setup to be performed interactively? Returns success if the user has asked
|
# setup to be performed interactively? Returns success if the user has asked
|
||||||
|
Loading…
Reference in New Issue
Block a user