From 52ef92f5d32d80471e6418dd9214eb4b78c2c933 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Thu, 16 Jul 2015 13:49:33 +0200 Subject: [PATCH] Local package installer --- scripts/lopac.sh | 85 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 scripts/lopac.sh diff --git a/scripts/lopac.sh b/scripts/lopac.sh new file mode 100644 index 0000000..373ef0f --- /dev/null +++ b/scripts/lopac.sh @@ -0,0 +1,85 @@ +# Local package installer + +# Config +export LOPAC_DIR="$HOME/.local/" +export LOPAC_CONFIG="$XDG_CONFIG_HOME/lopac/" + +# Constants +LOPAC_TMP_DIR=/tmp/lopac + +# Path set +export PATH="$LOPAC_DIR/bin:$LOPAC_DIR/usr/bin:$PATH" +export LD_LIBRARY_PATH="$LOPAC_DIR/lib:$LOPAC_DIR/usr/lib:$LD_LIBRARY_PATH" + +# Dir set +if [ ! -d "$LOPAC_TMP_DIR" ]; then + mkdir "$LOPAC_TMP_DIR" +fi + +# Misc functions +function step { # str + echo "--> $1" +} + +function error { # str + echo "ERR $1" +} + +function getPageLink { # package, arch, repo + echo "https://www.archlinux.org/packages/$3/$2/$1/" +} + +function getDlLink { # package, arch, repo + echo "$(getPageLink $1 $2 $3)download/" +} + +function testLink { # link + wget -q --max-redirect 0 "$1" -O /dev/null + return $? +} + +function testPackage { # package, arch, rep + link="$(getPageLink $1 $2 $3)" + testLink "$link" + return $? +} + +function findPackage { # package + for repo in community core extra + do + for arch in any $(uname -m) + do + testPackage $1 $arch $repo + if [ $? -eq 0 ] + then + echo "$arch:$repo" + return 0 + fi + done + done + return 1 +} + + +# Main functions +function install { # package + package=$1 + step "Finding $package" + data=$(findPackage $package) + if [ $? -ne 0 ]; then + error "Package not found" + return 1 + fi + arch=$(cut -d ":" -f 1 <<< "$data") + repo=$(cut -d ":" -f 2 <<< "$data") + + step "Downloading $repo/$package-$arch" + link=$(getDlLink $package $arch $repo) + wget $link -O $LOPAC_TMP_DIR/$package.tar.xz + step "Extracting package" + if [ ! -d "$LOPAC_TMP_DIR/$package" ]; then + mkdir "$LOPAC_TMP_DIR/$package" + fi + tar xJf "$LOPAC_TMP_DIR/$package.tar.xz" -C "$LOPAC_TMP_DIR/$package" + +}