#!/bin/zsh apply_overrides() { name="$1" kind="$2" echo $3 | sed -E 's/; */\n/g' | while IFS=$'\n ' read -r override_key override_values; do [[ -z $override_values ]] && continue override_key=$(echo $override_key | sed 's/[: ]//g') [[ $override_key = $BOX_SETUP_OS ]] && eval $override_values [[ $override_key = $BOX_SETUP_DISTRO ]] && eval $override_values [[ $4 =~ $override_key ]] && eval $override_values done [[ -z $name || -z $kind ]] && echo "zz_skip,zz_skip" || echo "$name,$kind" } build_custom() { target=$(echo "custom_$BOX_SETUP_OS-$BOX_SETUP_DISTRO-$1" | tr '-' '_') [[ ! -e ./installs_and_builds/$target ]] && target=$(echo "custom_default_$1" | tr '-' '_') [[ ! -e ./installs_and_builds/$target ]] && echo "custom build/install script not found for: $1" && return tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/$1.XXXXXXXX") || { echo "could not create temp dir for $1 build" && return } custom_script_path=$(pwd)/installs_and_builds/$target pushd $tmpdir > /dev/null $custom_script_path popd > /dev/null } echo "---- updating package manager / packages" [[ -n "$BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD" ]] && ${=BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD} [[ -n "$BOX_SETUP_UPDATE_PKGS_CMD" ]] && ${=BOX_SETUP_UPDATE_PKGS_CMD} echo "---- installing programs ---------------" [[ -z $1 ]] && system_types_list="base" || system_types_list="base,$1" echo "-------- for system types: $system_types_list" sed 1d "installs_and_builds/programs.csv" | while IFS=, read -r name kind os_overrides distro_overrides system_overrides notes; do apply_overrides $name $kind $os_overrides '' | IFS=, read -r name kind apply_overrides $name $kind $distro_overrides '' | IFS=, read -r name kind apply_overrides $name $kind $system_overrides $system_types_list | IFS=, read -r name kind [[ $name = 'zz_skip' || $kind = 'zz_skip' ]] && continue echo "-- installing $name" [[ $kind = 'package_manager' ]] && ${=BOX_SETUP_INSTALL_COMMAND} ${=name} [[ $kind = 'build_custom' ]] && build_custom $name done