From 26fb73344f8788bb6369007431cb1e83c5c5a290 Mon Sep 17 00:00:00 2001 From: hippoz Date: Sat, 3 Jul 2021 19:56:28 +0300 Subject: [PATCH] remove unneeded functions, clean up code, and reduce number of lines --- aps | 295 +++++++++++++++++++++--------------------------------------- 1 file changed, 100 insertions(+), 195 deletions(-) diff --git a/aps b/aps index 7b76baf..d7a4466 100644 --- a/aps +++ b/aps @@ -1,233 +1,138 @@ #!/bin/sh - -TEMP_LOCATION="/tmp" -INSTALL_ROOT="/tmp/alroot" -INSTALLED_PKG_DATABASE="${INSTALL_ROOT}/var/aps/installed" -LOCPKG_DATABASE="${INSTALL_ROOT}/var/aps/repos" -LOCK="${INSTALL_ROOT}/var/aps/lock" - -# Repo config +temp_location="/tmp" +install_root="/tmp/alroot" +installed_pkg_database="${install_root}/var/aps/installed" +locpkg_database="${install_root}/var/aps/repos" +lock="${install_root}/var/aps/lock" official="https://git.hippoz.xyz/alnux/repo" - -set_default_package_config_values() { - PKG_CONFIG_DEPLOY=true - PKG_CONFIG_VER="0.1" - PKG_CONFIG_NAME="alnuxpackage" - PKG_CONFIG_MAKEDEPENDS="" - PKG_CONFIG_DEPENDS="" +[ ! -d "${installed_pkg_database}" ] && mkdir -p "${installed_pkg_database}" +die() { + echo "${1}" + rm "${lock}" + exit 2 } - -unset_config_values() { - unset PKG_CONFIG_DEPLOY - unset PKG_CONFIG_VER - unset PKG_CONFIG_NAME - unset PKG_CONFIG_MAKEDEPENDS - unset PKG_CONFIG_DEPENDS -} - -load_installed_pkg_config() { - echo ":: Looking up package ${1} in local installed packages..." - set_default_package_config_values - if [ -d "${INSTALLED_PKG_DATABASE}/${1}" ]; then - echo ":: Package ${1} was found, loading config..." - PKG_NAME=${1} - PKG_PACKAGE_PATH="${INSTALLED_PKG_DATABASE}/${1}" - run_package_script "package" - else - echo "[E] Package ${1} was not found in the local installed package database, exiting..." - exit 1 - fi -} - -extract_package() { - echo "[*] Copying package ${1} into temporary location ${TEMP_LOCATION}..." - #tar -xf "${1}" -C "${TEMP_LOCATION}" - cp -prv "${1}" "${TEMP_LOCATION}" - PKG_NAME="${1%/}" - PKG_NAME="${PKG_NAME##*/}" - PKG_NAME=$(echo "${PKG_NAME}" | cut -f 1 -d '.') - cd "${INSTALL_ROOT}" - - PKG_PACKAGE_PATH="${TEMP_LOCATION}/${PKG_NAME}" - - set_default_package_config_values -} - -add_package_to_database() { - if [ ! -d "${INSTALLED_PKG_DATABASE}" ]; then - echo "[*] Package database folder not found, creating..." - mkdir -pv "${INSTALLED_PKG_DATABASE}" - fi - - if [ -x "${PKG_PACKAGE_PATH}/package" ]; then - echo ":: Adding target ${PKG_NAME} to installed package database..." - if [ ! -d "${INSTALLED_PKG_DATABASE}/${PKG_NAME}" ]; then - echo "[*] Package folder for ${PKG_NAME} not found, creating..." - mkdir "${INSTALLED_PKG_DATABASE}/${PKG_NAME}" +run_package_script() { # --- $2 is the package path, and $1 is the script to run + { + if [ -x "${2}/${1}" ]; then + echo ":: Running ${1}" + cd "${2}" || die "Could not enter package working directory. Exiting..." + "${2}/${1}" "${install_root}" "${2}" fi - cp -pv "${PKG_PACKAGE_PATH}/package" "${INSTALLED_PKG_DATABASE}/${PKG_NAME}/package" - if [ -e "${TEMP_LOCATION}/${PKG_NAME}-payloadfiles" ]; then - cp -pv "${TEMP_LOCATION}/${PKG_NAME}-payloadfiles" "${INSTALLED_PKG_DATABASE}/${PKG_NAME}/payloadfiles" - fi - else - echo "[E] Target ${PKG_NAME} does not have a package script and will not be added to the installed package database" - exit 2 - fi + } } - -run_package_script() { - if [ -x "${PKG_PACKAGE_PATH}/${1}" ]; then - echo ":: Running ${1} script for target ${PKG_NAME}..." - . "${PKG_PACKAGE_PATH}/${1}" ${INSTALL_ROOT} ${PKG_PACKAGE_PATH} - fi -} - -deploy_package_payload() { - if [ "${PKG_CONFIG_DEPLOY}" = true ]; then - echo ":: Deploying target ${PKG_NAME}..." - cp -rpv "${PKG_PACKAGE_PATH}/payload"/* "${INSTALL_ROOT}" > "${TEMP_LOCATION}/${PKG_NAME}-payloaddeploylog" - sed 's/^.*-> //' "${TEMP_LOCATION}/${PKG_NAME}-payloaddeploylog" | tr -d \'\" > "${TEMP_LOCATION}/${PKG_NAME}-payloadfiles" - rm "${TEMP_LOCATION}/${PKG_NAME}-payloaddeploylog" - fi -} - -install_extracted_package() { - run_package_script "package" - run_package_script "build" - run_package_script "predeploy" - deploy_package_payload - run_package_script "postdeploy" - - echo "[*] Install complete for target ${PKG_NAME}" -} - -extract_cleanup() { - echo "[*] Cleaning up after target ${PKG_NAME}..." - rm -r "${PKG_PACKAGE_PATH}" - rm "${TEMP_LOCATION}/${PKG_NAME}-payloadfiles" - - unset PKG_PACKAGE_PATH - unset PKG_NAME - - unset_config_values - - cd "${INSTALL_ROOT}" -} - install_local_package() { - if [ ! -e "${1}" ]; then - echo "[E] File ${1} does not exist, exiting..." - exit 1 + [ ! -e "${1}" ] && die "[E] File ${1} does not exist. Exiting..." + # Extract the package + echo "[*] Copying package ${1} into temporary location ${temp_location}..." + cp -prv "${1}" "${temp_location}" + pkg_name="${1%/}" + pkg_name="${pkg_name##*/}" + pkg_name=$(echo "${pkg_name}" | cut -f 1 -d '.') + pkg_path="${temp_location}/${pkg_name}" + cd "${pkg_path}" || die "Could not enter package path." + # Set default values for package + pkg_config_deploy=true + pkg_config_ver="0" + pkg_config_makedepends="" + pkg_config_depends="" + # Install package + . "${pkg_path}/package" + run_package_script "build" "${pkg_path}" + run_package_script "predeploy" "${pkg_path}" + # Deploy package + if [ "${pkg_config_deploy}" = true ]; then + echo ":: Deploying target ${pkg_name}..." + cp -rpv "${pkg_path}/payload"/* "${install_root}" > "${temp_location}/${pkg_name}-payloaddeploylog" + sed 's/^.*-> //' "${temp_location}/${pkg_name}-payloaddeploylog" | tr -d \'\" > "${temp_location}/${pkg_name}-payloadfiles" + rm "${temp_location}/${pkg_name}-payloaddeploylog" fi - - extract_package "${1}" - install_extracted_package - add_package_to_database - extract_cleanup + run_package_script "postdeploy" "${pkg_path}" + echo "[*] Install complete for target ${pkg_name}" + # Add package to database + if [ -x "${pkg_path}/package" ]; then + echo ":: Adding target ${pkg_name} to installed package database..." + [ ! -d "${installed_pkg_database}/${pkg_name}" ] && mkdir "${installed_pkg_database}/${pkg_name}" + cp -pv "${pkg_path}/package" "${installed_pkg_database}/${pkg_name}/package" + [ -e "${temp_location}/${pkg_name}-payloadfiles" ] && cp -pv "${temp_location}/${pkg_name}-payloadfiles" "${installed_pkg_database}/${pkg_name}/payloadfiles" + else + die "[E] Target ${pkg_name} does not have a package script (it's an invalid package!). Exiting..." + fi + # Cleanup + echo "[*] Cleaning up after target ${pkg_name}..." + rm -r "${pkg_path}" + rm "${temp_location}/${pkg_name}-payloadfiles" + cd "${install_root}" || die "Could not return to main directory. Exiting..." + unset pkg_path + unset pkg_name + unset pkg_config_deploy + unset pkg_config_ver + unset pkg_config_makedepends + unset pkg_config_depends } - remove_local_package() { - load_installed_pkg_config "${1}" - PAYLOADFILES_PATH="${PKG_PACKAGE_PATH}/payloadfiles" - - if [ ! -e "${PAYLOADFILES_PATH}" ]; then - echo "[E] Package ${1} does not have a payloadfiles file. Exiting..." - exit 0 - fi - + pkg_path="${installed_pkg_database}/${1}" + [ ! -d "${pkg_path}" ] && die "Package could not be found in local installed package database. Exiting..." + payloadfiles_path="${pkg_path}/payloadfiles" + [ ! -e "${payloadfiles_path}" ] && die "[E] Package ${1} does not have a payloadfiles file. Exiting..." echo ":: Removing target ${1}..." - - rm -rv $(<${PAYLOADFILES_PATH}) - rm -rv ${PKG_PACKAGE_PATH} - - echo "[*] Removal complete for target ${PKG_NAME}" + rm -rv "$(cat ${payloadfiles_path})" + rm -rv "${pkg_path}" + echo "[*] Removal complete for target ${pkg_name}" } - sync_local_repo_database() { echo ":: Syncing local database for repo ${1}..." - if [ ! -d "${LOCPKG_DATABASE}/${1}" ]; then + if [ ! -d "${locpkg_database}/${1}" ]; then echo ":: Local database for repo ${1} does not exist, cloning..." - git clone "${2}" "${LOCPKG_DATABASE}/${1}" + git clone "${2}" "${locpkg_database}/${1}" else echo ":: Local database for repo ${1} exists, updating..." - cd "${LOCPKG_DATABASE}/${1}" + cd "${locpkg_database}/${1}" || die "Could not enter local database. Exiting..." git pull fi } - install_package_from_repo() { # NOTE(hippoz): This can get a tad confusing... ${1} is the repo and ${2} is the package echo ":: Installing package ${2} from ${1} repo" - if [ ! -d "${LOCPKG_DATABASE}/${1}/${2}" ]; then - echo "[E] Package ${2} was not found in ${1}, exiting..." - exit 1 - else - install_local_package "${LOCPKG_DATABASE}/${1}/${2}" - fi + [ ! -d "${locpkg_database}/${1}/${2}" ] && die "[E] Target not found." + install_local_package "${locpkg_database}/${1}/${2}" } - upgrade() { echo ":: Upgrading installed packages..." unset_config_values - cd "${INSTALLED_PKG_DATABASE}" + cd "${installed_pkg_database}" || die "Could not enter installed package database. Exiting..." for pkg in */; do - INSTALLED_PKG_PATH="${INSTALLED_PKG_DATABASE}/${pkg}" - . ${INSTALLED_PKG_PATH}/package - PKG_NAME="${INSTALLED_PKG_PATH%/}" - PKG_NAME="${PKG_NAME##*/}" - - ALREADY_INSTALLED_VERSION=${PKG_CONFIG_VER} - - if [ ! -d "${LOCPKG_DATABASE}/${1}/${PKG_NAME}" ]; then - echo "[E] Package ${PKG_NAME} was not found in ${1}, exiting..." - exit 1 - else - . "${LOCPKG_DATABASE}/${1}/${PKG_NAME}/package" + installed_pkg_path="${installed_pkg_database}/${pkg}" + . "${installed_pkg_path}/package" + pkg_name="${installed_pkg_path%/}" + pkg_name="${pkg_name##*/}" + already_installed_version=${pkg_config_ver} + [ ! -d "${locpkg_database}/${1}/${pkg_name}" ] && die "[E] Package ${pkg_name} was not found in ${1}, exiting..." + . "${locpkg_database}/${1}/${pkg_name}/package" + if [ ! "${already_installed_version}" = "${pkg_config_ver}" ]; then + echo ":: Package ${pkg_name} is out of date, updating..." + install_package_from_repo "${1}" "${pkg_name}" fi - - if [ ! "${ALREADY_INSTALLED_VERSION}" = "${PKG_CONFIG_VER}" ]; then - echo ":: Package ${PKG_NAME} is out of date, updating..." - install_package_from_repo "${1}" "${PKG_NAME}" - fi - - unset_config_values + unset pkg_config_deploy + unset pkg_config_ver + unset pkg_config_makedepends + unset pkg_config_depends done } - main() { - if [ -f "${LOCK}" ]; then - echo "[E] A lock file already exists." - echo " If you're sure no package manager is running," - echo " remove the file ${LOCK}" + if [ -f "${lock}" ]; then + echo "[E] A lock file already exists. If you're sure no package manager is running, remove the file ${lock}." exit 1 fi - touch "${LOCK}" - + touch "${lock}" case ${1} in - install) - install_local_package "${2}" - ;; - remove) - remove_local_package "${2}" - ;; + install) install_local_package "${2}" ;; + remove) remove_local_package "${2}" ;; sync) sync_local_repo_database "official" ${official} - if [ -z "${2}" ]; then - echo "[*] No targets specified." - else - install_package_from_repo "official" "${2}" - fi - ;; - upgrade) - upgrade "official" - ;; - *) - echo "[E] Invalid option ${1}, exiting..." - rm "${LOCK}" - exit 0 - ;; + [ -z "${2}" ] && die "[*] No targets specified." + install_package_from_repo "official" "${2}" ;; + upgrade) upgrade "official" ;; + *) die "[E] Invalid option ${1}, exiting..." ;; esac - - rm "${LOCK}" + rm "${lock}" } - main "${1}" "${2}"