mirror of
https://github.com/levogevo/ffmpeg-builder.git
synced 2026-01-15 19:06:17 +00:00
major rework
This commit is contained in:
71
main.sh
71
main.sh
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
REPO_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
|
||||
REPO_DIR="$(cd "${BASH_SOURCE[0]//'main.sh'/}" && echo "$PWD")"
|
||||
IGN_DIR="${REPO_DIR}/gitignore"
|
||||
TMP_DIR="${IGN_DIR}/tmp"
|
||||
DL_DIR="${IGN_DIR}/downloads"
|
||||
@@ -13,51 +13,64 @@ FB_FUNC_NAMES=()
|
||||
declare -A FB_FUNC_DESCS
|
||||
declare -A FB_FUNC_COMPLETION
|
||||
|
||||
BUILD_CFG="${REPO_DIR}/"cfgs/builds.json
|
||||
COMPILE_CFG="${REPO_DIR}/"cfgs/compile_opts.json
|
||||
mapfile -t BUILDS < <(jq -r 'keys[]' "$BUILD_CFG")
|
||||
export BUILD_CFG COMPILE_CFG BUILDS
|
||||
# can't have recursive generation
|
||||
FB_RUNNING_AS_SCRIPT=${FB_RUNNING_AS_SCRIPT:-0}
|
||||
|
||||
# enable what ffmpeg builds
|
||||
unset FFMPEG_ENABLES
|
||||
export FFMPEG_ENABLES
|
||||
for enable in $(jq -r '.ffmpeg_enable[]' "$COMPILE_CFG"); do
|
||||
FFMPEG_ENABLES+=("${enable}")
|
||||
done
|
||||
# no undefined variables
|
||||
set -u
|
||||
|
||||
SCRIPT_DIR="${REPO_DIR}/scripts"
|
||||
ENTRY_SCRIPT="${SCRIPT_DIR}/entry.sh"
|
||||
src_scripts() {
|
||||
for script in "${REPO_DIR}/scripts/"*.sh; do
|
||||
# shellcheck disable=SC1090
|
||||
source "${script}"
|
||||
done
|
||||
local SCRIPT_DIR="${REPO_DIR}/scripts"
|
||||
rm "${SCRIPT_DIR}"*.sh
|
||||
|
||||
if [[ $FB_RUNNING_AS_SCRIPT -eq 0 ]]; then
|
||||
# shellcheck disable=SC2016
|
||||
echo '#!/usr/bin/env bash
|
||||
cd "$(dirname "$(readlink -f $0)")/.."
|
||||
. main.sh
|
||||
FB_RUNNING_AS_SCRIPT=1
|
||||
scr_name="$(bash_basename $0)"
|
||||
cmd="${scr_name//.sh}"
|
||||
$cmd $@' >"${ENTRY_SCRIPT}"
|
||||
chmod +x "${ENTRY_SCRIPT}"
|
||||
fi
|
||||
|
||||
for script in "${REPO_DIR}/lib/"*.sh; do
|
||||
# shellcheck disable=SC1090
|
||||
source "${script}"
|
||||
done
|
||||
}
|
||||
|
||||
FB_FUNC_NAMES+=('print_cmds')
|
||||
FB_FUNC_DESCS['print_cmds']='print usable commands'
|
||||
print_cmds() {
|
||||
echo -e "\n~~~ Usable Commands ~~~"
|
||||
for funcname in "${FB_FUNC_NAMES[@]}"; do
|
||||
echo -e "${CYAN}${funcname}${NC}:\n\t" "${FB_FUNC_DESCS[${funcname}]}"
|
||||
done
|
||||
echo -e "~~~~~~~~~~~~~~~~~~~~~~~\n"
|
||||
echo -e "\n~~~ Usable Commands ~~~"
|
||||
for funcname in "${FB_FUNC_NAMES[@]}"; do
|
||||
echo -e "${CYAN}${funcname}${NC}:\n\t" "${FB_FUNC_DESCS[${funcname}]}"
|
||||
fb_running_as_script || (cd "$SCRIPT_DIR" && ln -sf entry.sh "${funcname}.sh")
|
||||
done
|
||||
echo -e "~~~~~~~~~~~~~~~~~~~~~~~\n"
|
||||
}
|
||||
|
||||
set_completions() {
|
||||
for funcname in "${FB_FUNC_NAMES[@]}"; do
|
||||
complete -W "${FB_FUNC_COMPLETION[${funcname}]}" "${funcname}"
|
||||
done
|
||||
set +u
|
||||
for funcname in "${FB_FUNC_NAMES[@]}"; do
|
||||
complete -W "${FB_FUNC_COMPLETION[${funcname}]}" "${funcname}"
|
||||
done
|
||||
set -u
|
||||
}
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
source "${HOME}/.bashrc"
|
||||
src_scripts || return 1
|
||||
determine_os || return 1
|
||||
determine_pkg_mgr || return 1
|
||||
|
||||
unset PREFIX
|
||||
PREFIX="$(jq -r '.prefix' "${COMPILE_CFG}")"
|
||||
test "${PREFIX}" == 'null' && PREFIX="${IGN_DIR}/${OS}_sysroot"
|
||||
export PREFIX
|
||||
# pkg_mgr initialized in determine_pkg_mgr
|
||||
# shellcheck disable=SC2154
|
||||
test "${PREFIX}" == '' && PREFIX="${IGN_DIR}/${pkg_mgr}_sysroot"
|
||||
|
||||
set_compile_opts || return 1
|
||||
print_cmds || return 1
|
||||
fb_running_as_script || print_cmds || return 1
|
||||
set_completions || return 1
|
||||
|
||||
Reference in New Issue
Block a user