diff --git a/os-release b/os-release index d3e3bff..889e852 100644 --- a/os-release +++ b/os-release @@ -3,7 +3,7 @@ PRETTY_NAME="Duck Linux Beta" ID=dlb BUILD_ID=rolling ANSI_COLOR="38;2;23;147;209" -HOME_URL="" +HOME_URL="https://git.hippoz.xyz/duck" DOCUMENTATION_URL="" SUPPORT_URL="" BUG_REPORT_URL="" diff --git a/spkg b/spkg index 664a6c8..81fa500 100755 --- a/spkg +++ b/spkg @@ -1,49 +1,102 @@ -#!/usr/bin/env sh -# NOTE: sPKG via wget CAN'T RUN WITHOUT MAKE!!! -source=git.hippoz.xyz/spkg/repos -case ${1} in - #setup does the important shit like, copy spkg and chmod it, install osrel to etc. - setup) cp ./spkg /usr/bin/spkg && chmod +x /usr/bin/spkg && mkdir /etc/ && mv os-release /etc/ ;; - #remove, just well, uninstalls and removes from cache. - remove) for fname in $@ - do - pushd && cd /usr/src/${2} && sed "s/${2} $(${2} --version)//" && make uninstall && cd .. && rm -rf ${2} && popd && done ;; - #install is complicated, root dir just changes the root dir, first install gets the make file that's requested, prepares, makes, installs - #and saves to cache. - install) case ${2} in - --root-dir=) for fname in $@ - do - $prefix=${4} && export $prefix && pushd && mkdir $prefix/usr/src/${3} 2>/dev/null && wget $source/${3}/Makefile $prefix/usr/src/${3}/Makefile && cd $prefix/usr/src/${3} && make prepare && make && make install && sed a\ "${3} $(${3} --version)" /var/cache/spkg.cache > /var/cache/spkg.cache && popd && done || echo 'Invalid package.' && popd ;; - *) for fname in $@ - do - $prefix=/usr && export $prefix && pushd && mkdir /usr/src/${3} 2>/dev/null && wget $source/${3}/Makefile /usr/src/${3}/Makefile && cd /usr/src/${3} && make prepare && make && make install && sed a\ "${3} $(${3} --version)" /var/cache/spkg.cache > /var/cache/spkg.cache && popd && done || echo 'Invalid package.' && popd ;; - esac ;; - cache) case ${2} in - #cache clean rm and save are easy thus won't wase time for them - clean) rm -rf /usr/src/* ;; - rm) rm -rf /usr/src/${3} ;; - save) case ${3} in - to) cp /usr/src/ ${4} ;; - *) cp /usr/src/ /etc/spkg/cache || mkdir /etc/spkg 2>/dev/null && mkdir /etc/spkg/cache 2>/dev/null && cp /usr/src/ /etc/spkg/cache ;; - esac ;; - #database lookup local just greps cache - # on the other hand, query is complicated, does the same thing though. - #but for online cache. - database) case ${3} in - lookup) case ${4} in - local) grep $@ /var/cache/spkg.cache ;; - query) wget $source/spkg.cache /tmp/spkg/web.spkg.cache && grep ${5} /tmp/spkg/web.spkg.cache && rm /tmp/spkg/cache || mkdir 2>/dev/null /tmp/spkg && wget $source/spkg.cache /tmp/spkg/ && grep ${5} /tmp/spkg/web.spkg.cache && rm /tmp/spkg/cache;; - list) cat /var/cache/spkg.cache - esac ;; - esac ;; - esac ;; - #update is really complicated. you must know that it compares local and repo version of the package - update) for fname in $@ - do - $prefix=/usr && export $prefix && version1=$(grep ${2} /var/cache/spkg.cache) && version2=$(wget $source/spkg.cache /tmp/spkg/web.spkg.cache && grep ${2} /tmp/spkg/web.spkg.cache ) && [ version1 = version2] && echo 'Up to date.' || pushd && mkdir /usr/src/${2} 2>/dev/null && wget $source/${2}/Makefile /usr/src/${2}/Makefile && cd /usr/src/${2} && make prepare && make && make install && sed "s/${2} $({$2} --version)//" && sed a\ "${2} $(${2} --version)" /var/cache/spkg.cache > /var/cache/spkg.cache && popd && done ;; - --help) echo 'sPKG via WGET, to cache, just type in sudo spkg cache save. - to install, just type in sudo spkg install. - to update, just type in sudo spkg update. - to setup (IMPORTANT!!!), just type in sudo spkg setup' ;; - --version) echo 'beta 21.06.29.2b' ;; +#!/bin/sh + +source="https://git.hippoz.xyz/spkg/repo" + +setup() { + cp ./spkg /usr/bin/spkg + chmod +x /usr/bin/spkg + mkdir /etc/ + mv os-release /etc/ +} +removepkg() { + pkgname=$1 + + cd /usr/src/"${pkgname}" || exit 2 + make uninstall +} +instpkg() { + pkgname=$1 + prefix=$2 + + mkdir -p "${prefix}"/usr/src/"${pkgname}" + wget "${source}"/"${pkgname}"/Makefile "${prefix}"/usr/src/"${pkgname}"/Makefile + cd "${prefix}"/usr/src/"${pkgname}" || exit 2 + export PREFIX="${prefix}" + export PKGNAME="${pkgname}" + make prepare + make + make install + cat "${pkgname}" > "${prefix}"/var/cache/spkg.cache + "${pkgname}" --version > "${prefix}"/var/cache/spkg.cache +} +update() { + pkgname=$1 + prefix=$2 + + version1=$(grep "${pkgname}" /var/cache/spkg.cache) + version2=$(wget "${source}"/spkg.cache /tmp/spkg/web.spkg.cache && grep "${pkgname}" /tmp/spkg/web.spkg.cache ) + if [ "$version1" = "${version2}" ]; then + echo 'Up to date.' + else + instpkg "${pkgname}" "${prefix}" + fi +} +dbquery() { + pkgname=$1 + + wget "${source}"/spkg.cache /tmp/spkg/web.spkg.cache + grep "${pkgname}" /tmp/spkg/web.spkg.cache + rm /tmp/spkg/cache || mkdir 2>/dev/null /tmp/spkg +} +dblocal() { + pkgname=$1 + + grep "${pkgname}" /var/cache/spkg.cache +} +usage() { + echo 'sPKG via WGET, to cache, just type in sudo spkg cache save. + to install, just type in sudo spkg install. + to update, just type in sudo spkg update. + to setup (IMPORTANT!!!), just type in sudo spkg setup' +} +version() { + echo "beta 21.06.29.1a" +} +case "${1}" in + setup) + setup ;; + remove) + removepkg "${2}" ;; + install) + case "${2}" in + --root-dir) instpkg "${4}" "${3}" ;; + *) instpkg "${3}" "/" ;; + esac ;; + cache) + case "${2}" in + clean) + rm -rf /usr/src/* ;; + rm) + rm -rf /usr/src/"${3}" ;; + save) + case ${3} in + to) cp -rv /usr/src/* "${4}"/ ;; + esac ;; + database) + case "${3}" in + lookup) + case "${4}" in + local) + dblocal "${5}" ;; + query) + dbquery "${5}" ;; + esac ;; + esac ;; + esac ;; + update) + update "${2}" ;; + --help) + usage ;; + --version) + version ;; esac