60 lines
2.2 KiB
Bash
Executable File
60 lines
2.2 KiB
Bash
Executable File
#!/bin/zsh
|
|
|
|
apply_overrides() {
|
|
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
|
|
|