TIMESTAMP_FMT="${TIMESTAMP_FMT:-"%Y/%m/%d %H:%M:%S"}";
date() {
command date +"${TIMESTAMP_FMT}";
};
fetch() {
wget --no-check-certificate -N "${@}";
};
fetch_git() {
local _subdir="${1}" _repo="${2}";
if [ -d "${_subdir}" ]; then
(cd "${_subdir}" && git pull origin main);
else
git clone "${_repo}" "${_subdir}";
fi;
};
is_build_script_done() {
local _op="${1}" _script_fname="${SCRIPT_FNAME##*/}";
[ -f "${WORKDIR}/.${_script_fname%.build}.${_op}" ];
};
set_build_script_done() {
local _script_fname="${SCRIPT_FNAME##*/}" _done_fname;
_done_fname="${WORKDIR}/.${_script_fname%.build}";
while [ $# -ge 1 ]; do
if [ "x${1#-}" != "x${1}" ]; then
rm -f "${_done_fname}.${1#-}";
else
printf "" >| "${_done_fname}.${1}";
log_msg info "Finished build step ${1} of build script \`${_script_fname}'.";
fi; shift;
done;
};
log_msg() {
local _lvl="${1}"; shift;
case "${_lvl}" in
fail) printf "\033[91m"; ;;
info) printf "\033[97m"; ;;
succ) printf "\033[92m"; ;;
esac;
if [ $# -gt 1 ]; then
printf "==> %s %s %s\033[0m\n" "$(date +"${TIMESTAMP_FMT}")" "${1}" "$*";
else
printf "==> %s %s\033[0m\n" "$(date +"${TIMESTAMP_FMT}")" "${1}";
fi;
};
parse_with_pkg_name() {
_pkg_name="${1}"; local _envvs _envv; shift;
while [ $# -ge 0 ]; do
_pkg_url="${1}"; _envvs="${2}"; _pkg_fname="${_pkg_url##*/}";
if [ "x${_pkg_fname%%-*}" = "x${_pkg_name}" ]; then
IFS=:; for _envv in ${_envvs}; do
export ${_envv};
done;
_pkg_subdir="${_pkg_fname%%.tar*}";
return;
fi; shift 2;
done; exit 1;
};
rm_if_exists() {
while [ $# -gt 1 ]; do [ "x${1%[a-z]}" = "x-" ] &&\
eval local _${1#-}flag=1; shift; done;
local _dir="${1}";
if [ -d "${_dir}" ]; then
rm -rf "${_dir}" || return 1;
fi;
if [ ${_mflag:-0} -eq 1 ]; then
mkdir "${_dir}" || return 2;
fi;
if [ ${_cflag:-0} -eq 1 ]; then
cd "${_dir}" || return 3;
fi;
};
run_configure_with_extra_args() {
local IFS="," _script="${1}" _extra_args="${2}";
shift 2; "${_script}" "${@}" ${_extra_args};
};
set_build_dir() {
export _build_dir="${1}-build-${2}";
};
set_env_vars() {
local _val="${1}"; shift;
while [ $# -ge 1 ]; do
export "${1}=${_val}"; shift;
done;
};
split() {
local _IFS="${IFS}" IFS="${1}" _txt="${2}";
set -- ${_txt}; IFS="${_IFS}"; echo "${*}";
};
# vim:filetype=sh