kiss: y/n prompts and view package build file feature

This commit is contained in:
Dylan Araps 2020-02-18 21:14:49 +02:00
parent 9bb2c8bee1
commit 290d11092a
No known key found for this signature in database
GPG Key ID: 46D62DD9F1DE636E
1 changed files with 33 additions and 18 deletions

43
kiss
View File

@ -39,14 +39,26 @@ contains() {
case " $1 " in *" $2 "*) return 0; esac; return 1 case " $1 " in *" $2 "*) return 0; esac; return 1
} }
prompt() { yn() {
# Ask the user for some input. log "${1:-Continue?} (y/n)"
log "Continue?: Press Enter to continue or Ctrl+C to abort here"
# POSIX 'read' has none of the "nice" options like '-n', '-p' # Enable raw input to allow for a single byte to be read from
# etc etc. This is the most basic usage of 'read'. # stdin without needing to wait for the user to press Return.
# '_' is used as 'dash' errors when no variable is given to 'read'. stty -icanon -echo
read -r _
# Read a single byte from stdin using 'dd'. POSIX 'read' has
# no support for single/'N' byte based input from the user.
answer=$(dd ibs=1 count=1 2>/dev/null)
# Disable raw input, leaving the terminal how we *should*
# have found it.
stty icanon echo
# Handle the answer here directly, enabling this function's
# return status to be used in place of checking for '[yY]'
# throughout this program. Also call the function again if
# invalid input is given.
case $answer in y) ;; n) return 1 ;; *) yn "$1"; esac
} }
as_root() { as_root() {
@ -526,7 +538,7 @@ pkg_build() {
log "Building: $*" log "Building: $*"
# Only ask for confirmation if more than one package needs to be built. # Only ask for confirmation if more than one package needs to be built.
[ $# -gt 1 ] || [ "$pkg_update" ] && prompt [ $# -gt 1 ] || [ "$pkg_update" ] && yn
log "Checking to see if any dependencies have already been built" log "Checking to see if any dependencies have already been built"
log "Installing any pre-built dependencies" log "Installing any pre-built dependencies"
@ -560,6 +572,13 @@ pkg_build() {
pkg_verify "$@" pkg_verify "$@"
# Allow user to inspect package files prior to build.
[ "$KISS_AUDIT" != 1 ] ||
for pkg; do
yn "View build file for $pkg?" &&
"${EDITOR:-vi}" "$(pkg_find "$pkg")/build"
done
# Finally build and create tarballs for all passed packages and # Finally build and create tarballs for all passed packages and
# dependencies. # dependencies.
for pkg; do for pkg; do
@ -643,14 +662,10 @@ pkg_build() {
set -- $explicit set -- $explicit
# Only ask for confirmation if more than one package needs to be installed. # Only ask for confirmation if more than one package needs to be installed.
[ $# -gt 1 ] && { [ $# -gt 1 ] && yn "Install built packages? [$*]" && {
log "Install built packages? [$*]"
prompt && {
args i "$@" args i "$@"
return return
} }
}
log "Run 'kiss i $*' to install the package(s)" log "Run 'kiss i $*' to install the package(s)"
} }
@ -1146,7 +1161,7 @@ pkg_updates() {
log "Detected package manager update" log "Detected package manager update"
log "The package manager will be updated first" log "The package manager will be updated first"
prompt yn
pkg_build kiss pkg_build kiss
args i kiss args i kiss