tools/autoinstall/run_command.sh

89 lines
1.7 KiB
Bash
Raw Normal View History

2024-01-09 15:48:11 +00:00
#!/usr/bin/env bash
group=${args[group]:?}
2024-03-22 21:14:13 +00:00
file=${args[--file]:-}
2024-01-12 01:40:58 +00:00
clean=${args[--clean]:-}
2024-01-09 15:48:11 +00:00
_install_entry() {
type="$1"
source="$2"
target="$3"
hook="$4"
pipe="$5"
completions="$6"
2024-01-09 15:48:11 +00:00
install_args=()
if [[ -n "$hook" ]]; then
install_args+=("--hook=$hook")
fi
2024-01-12 01:40:58 +00:00
if [[ -n "$clean" ]]; then
install_args+=("--clean")
fi
2024-01-09 15:48:11 +00:00
install_args+=("$type")
if [[ -n "$pipe" ]]; then
install_args+=("--pipe=$pipe")
fi
2024-01-12 01:40:58 +00:00
if [[ -n "$completions" ]]; then
install_args+=("--completions=$completions")
fi
2024-01-09 15:48:11 +00:00
if [[ $source = \$* ]]
then
source=$(eval "echo $source")
fi
2024-01-09 15:48:11 +00:00
install_args+=("$source")
install_args+=("$(eval "echo $target")")
2024-01-09 15:48:11 +00:00
"$0" "${install_args[@]}"
}
_handle_entry() {
unset AUTOINSTALL_ITEM_TYPE \
AUTOINSTALL_ITEM_SOURCE \
AUTOINSTALL_ITEM_TARGET \
AUTOINSTALL_ITEM_HOOK \
AUTOINSTALL_ITEM_PIPE \
AUTOINSTALL_ITEM_COMPLETIONS
eval "$1"
# check if we have the required vars
if [[ -z "${AUTOINSTALL_ITEM_TYPE:-}" \
|| -z "${AUTOINSTALL_ITEM_SOURCE:-}" \
|| -z "${AUTOINSTALL_ITEM_TARGET:-}" ]]
then
return
fi
_install_entry "$AUTOINSTALL_ITEM_TYPE" "$AUTOINSTALL_ITEM_SOURCE" \
"$AUTOINSTALL_ITEM_TARGET" "${AUTOINSTALL_ITEM_HOOK:-}" "${AUTOINSTALL_ITEM_PIPE:-}" "${AUTOINSTALL_ITEM_COMPLETIONS:-}"
}
file_lines=$(wc -l < "$file")
line=0
while [[ $line -lt $file_lines ]]; do
entry=$(tail -n +$line "$file" | awk '/^$/{exit} {print} ')
entry_len=$(echo "$entry" | wc -l)
line=$((line + entry_len))
if [[ $entry_len -le 1 ]]; then
continue
fi
if [[ "$group" != "all" ]]
then
# check if group is in groups
if ! echo "$entry" | grep -qE "^AUTOINSTALL_ITEM_GROUPS=\"(.*,)?$group(,.*)?\"$"
then
continue
fi
fi
_handle_entry "$entry" || true # ignore errors
2024-01-09 15:48:11 +00:00
done