summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xibps-install112
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}."