diff options
| -rwxr-xr-x | ibps-install | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/ibps-install b/ibps-install new file mode 100755 index 0000000..cb2f767 --- /dev/null +++ b/ibps-install @@ -0,0 +1,112 @@ +#!/bin/bash + +set -e + +MIRROR="https://packages.0xinfinity.dev" + +if [ -z "${FS_ROOT}" ] +then + FS_ROOT="/" +fi + +if [[ "${FS_ROOT}" == "/" ]]; then + + if [[ "$(whoami)" != "root" ]]; then + echo -e "You must run '${0}' as root." + exit 1 + fi +fi + +if [ -z "${TMP_DIR}" ] +then + TMP_DIR="/tmp" +fi +mkdir -p "${TMP_DIR}/downloads" + +if [ -z "${IBPS_DB}" ] +then + IBPS_DB="${FS_ROOT}/var/ibps/" +fi +mkdir -p "${IBPS_DB}" + +function download_from_mirror { + file="$1" + version="$2" + build_no="$3" + curl --output-dir="$TMP_DIR/downloads" "${MIRROR}/${file}/${file}-${version}-${build_no}.ibps" -O + echo "Downloaded ${file}:${version}:${build_no}" +} + +function extract { + file="$1" + currdir="$(pwd)" + + mkdir -p "${TMP_DIR}/${file}" + cp "${TMP_DIR}/downloads/${file}.ibps" "${TMP_DIR}/${file}" + cd "${TMP_DIR}/${file}" + + tar -xf "${file}.ibps" + + rm "${file}.ibps" + + cd "${currdir}" +} + +## Temporarily broken for testing purposes +function get_latest_version { + local file="$1" + + echo -e "$resp" + echo -e "VERSION SPEC:" + echo -e "$version" + echo -e "BUILD SPEC:" + echo -e "$build_no" +} + +if [ $# -eq 0 ] +then + echo -e "You must supply a package name!" + echo -e "Example:" + echo -e " $0 vim" +fi + +PKG_NAME=$1 + +resp=$(curl "${MIRROR}/${PKG_NAME}/" -o -) + +if [[ "$(echo "$resp" | grep "^<head><title>404 Not Found</title></head>")" == "<head><title>404 Not Found</title></head>" ]]; then + echo -e "Package '${PKG_NAME}' does not exist on mirror!" + exit 1 +fi + +VERSION=$(echo "$resp" | grep "^<a href=\"${PKG_NAME}" | cut -d\" -f2 | cut -d- -f2) +BUILD_NO=$(echo "$resp" | grep "^<a href=\"${PKG_NAME}" | cut -d\" -f2 | cut -d- -f3 | cut -d. -f1) + +echo "version: ${VERSION}, build no: ${BUILD_NO}" + +download_from_mirror "$PKG_NAME" "$VERSION" "$BUILD_NO" + +DWNLD_PKG_NAME="${PKG_NAME}-${VERSION}-${BUILD_NO}" + +extract "${DWNLD_PKG_NAME}" + +source "${TMP_DIR}/${DWNLD_PKG_NAME}/${DWNLD_PKG_NAME}/.desc" + +mkdir -p "${IBPS_DB}/${PKG_NAME}/" + +echo "name=${name}" > "${IBPS_DB}/${PKG_NAME}/desc" +echo "version=${version}" >> "${IBPS_DB}/${PKG_NAME}/desc" +echo "build_no=${build_no}" >> "${IBPS_DB}/${PKG_NAME}/desc" +echo "depends=${depends}" >> "${IBPS_DB}/${PKG_NAME}/desc" + +for i in $(ls "${TMP_DIR}/${DWNLD_PKG_NAME}/${DWNLD_PKG_NAME}/"); +do + cp -r "${TMP_DIR}/${DWNLD_PKG_NAME}/${DWNLD_PKG_NAME}/${i}" "${FS_ROOT}/" + echo "Copying ${i} to ${FS_ROOT}" +done + +if [ "$(type -t post_install)" = "function" ]; then + post_install +fi + +echo "Installed ${PKG_NAME} with version ${VERSION}." |
