dep

Package manager for embedded C libraries
git clone git://git.finwo.net/app/dep
Log | Files | Refs | README | LICENSE

commit 37f03ba9c9d78331770237987b7c8e318da99ec9
parent f5827d67d04c59cbc63efb23f18f33de8f4b0387
Author: finwo <finwo@pm.me>
Date:   Sat, 28 Jan 2023 21:12:08 +0100

Added support for linking tarball instead of package.ini as dependency

Diffstat:
Mdist/dep | 62++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Msrc/command/add/help.txt | 2+-
Msrc/command/install/help.txt | 2+-
Msrc/command/install/index.sh | 24+++++++++++++++++++-----
4 files changed, 81 insertions(+), 9 deletions(-)

diff --git a/dist/dep b/dist/dep @@ -49,7 +49,7 @@ cmds[${#cmds[*]}]="help" #include "util/ini.sh" read -r -d '' help_topics[add] <<- EOF -Usage: ${NAME} [global options] add <name> <url> +Usage: dep [global options] add <name> <url> Description: @@ -194,7 +194,7 @@ fi # None read -r -d '' help_topics[install] <<- EOF -Usage: ${NAME} [global options] install +Usage: dep [global options] install Description: @@ -334,6 +334,64 @@ function cmd_install_dep { done < <(ini_foreach ini_output_section "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" "export.") } +read -r -d '' help_topics[repository] <<- EOF +Usage: dep [global options] repository <command> <argument> + +Commands: + + add <name> <manifest-url> Add a repository to include during dependency adds + del <name> Delete a repository from your dependency adds +EOF + +CMD_REPO_CMD= +CMD_REPO_NAME= +CMD_REPO_LOC= + +function arg_r { + arg_repository "$@" + return $? +} +function arg_repo { + arg_repository "$@" + return $? +} +function arg_repository { + CMD_REPO_CMD=$1 + CMD_REPO_NAME=$2 + + case "${CMD_REPO_CMD}" in + add) + CMD_REPO_LOC=$3 + ;; + del) + # Intentionally empty + ;; + *) + echo "Unknown command: ${CMD_REPO_CMD}" >&2 + exit 1 + ;; + esac + + return 0 +} + +function cmd_r { + cmd_repository "$@" + return $? +} +function cmd_repo { + cmd_repository "$@" + return $? +} +function cmd_repository { + mkdir -p "${HOME}/.config/finwo/dep/repositories.d" + echo "${CMD_REPO_LOC}" >> "${HOME}/.config/finwo/dep/repositories.d/${CMD_REPO_NAME}.cnf" +} + +cmds[${#cmds[*]}]="r" +cmds[${#cmds[*]}]="repo" +cmds[${#cmds[*]}]="repository" + function main { cmd=help diff --git a/src/command/add/help.txt b/src/command/add/help.txt @@ -1,4 +1,4 @@ -Usage: ${NAME} [global options] add <name> <url> +Usage: __NAME [global options] add <name> <url> Description: diff --git a/src/command/install/help.txt b/src/command/install/help.txt @@ -1,4 +1,4 @@ -Usage: ${NAME} [global options] install +Usage: __NAME [global options] install Description: diff --git a/src/command/install/index.sh b/src/command/install/index.sh @@ -76,7 +76,21 @@ function cmd_install_dep { # Fetch package.ini for the dependency mkdir -p "${CMD_INSTALL_PKG_DEST}/${name}" - curl --location --progress-bar "${origin}" --output "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" + case "${origin##*.}" in + ini) + # Download the package.ini for the dependency + curl --location --progress-bar "${origin}" --output "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" + ;; + *) + # Download the assumed tarball + mkdir -p "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}" + if [ ! -f "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball-pkg" ]; then + curl --location --progress-bar "${SRC}" --output "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball-pkg" + fi + # Extract tarball + tar --extract --directory "${CMD_INSTALL_PKG_DEST}/${name}/" --strip-components 1 --file="${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball-pkg" + ;; + esac # Fetch it's src (if present) SRC="$(ini_foreach ini_output_value "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" package.src)" @@ -84,19 +98,19 @@ function cmd_install_dep { # Download mkdir -p "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}" - if [ ! -f "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball" ]; then - curl --location --progress-bar "${SRC}" --output "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball" + if [ ! -f "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball-src" ]; then + curl --location --progress-bar "${SRC}" --output "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball-src" fi # Verify checksum HASH="$(ini_foreach ini_output_value "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" package.src-sha256)" - if [ ! -z "${HASH}" ] && [ "${HASH}" != "$(sha256sum "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball" | awk '{print $1}')" ]; then + if [ ! -z "${HASH}" ] && [ "${HASH}" != "$(sha256sum "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball-src" | awk '{print $1}')" ]; then echo "The tarball for '${name}' failed it's checksum!" >&2 exit 1 fi # Extract tarball - tar --extract --directory "${CMD_INSTALL_PKG_DEST}/${name}/" --strip-components 1 --file="${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball" + tar --extract --directory "${CMD_INSTALL_PKG_DEST}/${name}/" --strip-components 1 --file="${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball-src" fi # Handle fetching extra files