Add list-envvars.zsh
This commit is contained in:
43
list-envvars.zsh
Executable file
43
list-envvars.zsh
Executable file
@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env zsh
|
||||
|
||||
print_help_and_exit() {
|
||||
echo "Usage: list-envvars.zsh [-h] [-z] <SCRIPT>"
|
||||
echo " List the environment variables exported by SCRIPT, which is run in the"
|
||||
echo " process. SCRIPT must be a zsh script as it will be sourced by this script. It"
|
||||
echo " also mustn't use the DEBUG trap, as this script uses it."
|
||||
echo "Options:"
|
||||
echo " -h Print this message, then exit"
|
||||
echo " -z Use a NULL byte instead of a newline to delimit output"
|
||||
exit 0
|
||||
}
|
||||
|
||||
(( ${#} == 0 )) && print_help_and_exit
|
||||
|
||||
local line_delim='\n'
|
||||
while getopts 'hz' OPTOPT; do
|
||||
case "${OPTOPT}" in
|
||||
h)
|
||||
print_help_and_exit
|
||||
;;
|
||||
z)
|
||||
line_delim='\0'
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
local target_script="${@[${OPTIND}]}"
|
||||
|
||||
local found_vars=()
|
||||
handle_debug_trap() {
|
||||
local cmdline=(${(Q)${(Z:C:)1}})
|
||||
[[ "${cmdline[1]}" = 'export' ]] || return
|
||||
found_vars+=(${${cmdline:1}/=*})
|
||||
}
|
||||
|
||||
() {
|
||||
emulate -L zsh
|
||||
trap 'handle_debug_trap "${ZSH_DEBUG_CMD}"' DEBUG
|
||||
source "${target_script}" >/dev/null
|
||||
}
|
||||
|
||||
printf "%s${line_delim}" ${found_vars}
|
||||
Reference in New Issue
Block a user