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:
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