commit 5bb9c79aa3fffe7422599349a72f11c3389f4a7e
parent 9c6a1ca8d23178e8bb4a8395c8d3a7f0787fa59f
Author: finwo <finwo@pm.me>
Date: Fri, 27 Jan 2023 21:24:20 +0100
Implemented downloading src by dependency's package.ini
Diffstat:
5 files changed, 72 insertions(+), 12 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -1,3 +1,4 @@
/bak/
/util/
/dep
+/lib/
diff --git a/package.ini b/package.ini
@@ -3,4 +3,4 @@ name=dep
deps=lib
[dependencies]
-bashpp=https://github.com/iwonbigbro/bashpp/archive/refs/heads/master.tar.gz
+antirez/linenoise=https://raw.githubusercontent.com/finwo/dep-repository/master/antirez/linenoise/package.ini
diff --git a/src/command/install.sh b/src/command/install.sh
@@ -21,7 +21,7 @@ function cmd_install {
exit 1
fi
- ini_foreach cmd_install_parse_ini "${PACKAGE_PATH}"
+ ini_foreach cmd_install_parse_ini_main "${PACKAGE_PATH}"
cmd_install_execute
}
@@ -31,7 +31,7 @@ cmds[${#cmds[*]}]="install"
CMD_INSTALL_PKG_NAME=
CMD_INSTALL_PKG_DEST="$(pwd)/lib"
declare -A CMD_INSTALL_DEPS
-function cmd_install_parse_ini {
+function cmd_install_parse_ini_main {
case "$1" in
package.)
case "$2" in
@@ -50,8 +50,70 @@ function cmd_install_parse_ini {
}
function cmd_install_execute {
- echo "PKG_NAME: $CMD_INSTALL_PKG_NAME"
- echo "LIB_DEST: $CMD_INSTALL_PKG_DEST"
- echo "@: ${CMD_INSTALL_DEPS[@]}"
- echo "!: ${!CMD_INSTALL_DEPS[@]}"
+ cmd_install_reset_generated
+ for key in "${!CMD_INSTALL_DEPS[@]}"; do
+ cmd_install_dep "$key" "${CMD_INSTALL_DEPS[$key]}"
+ done
}
+
+function cmd_install_reset_generated {
+ rm -rf "${CMD_INSTALL_PKG_DEST}/.__NAME"
+ mkdir -p "${CMD_INSTALL_PKG_DEST}/.__NAME/include"
+ echo "CFLAGS+=-I${CMD_INSTALL_PKG_DEST}/.__NAME/include" > "${CMD_INSTALL_PKG_DEST}/.__NAME/config.mk"
+}
+
+function cmd_install_dep_parse_package {
+ echo PARSE PKG
+}
+
+function cmd_install_dep {
+ name=$1
+ origin=$2
+
+ # Full install if missing
+ if [ ! -d "${CMD_INSTALL_PKG_DEST}/${name}" ]; then
+
+ # 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"
+
+ # Fetch it's src (if present)
+ if [ ! -z "$(ini_foreach ini_output_value "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" package.src)" ]; then
+ SRC="$(ini_foreach ini_output_value "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" package.src)"
+ HASH="$(ini_foreach ini_output_value "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" package.src-sha256)"
+
+ # 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"
+ fi
+
+ # Verify checksum
+ if [ "${HASH}" != "$(sha256sum "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball" | 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"
+ fi
+
+ # Step 3: Execute fetch (for patches etc)
+ else
+ echo "ALREADY INSTALLED: ${name}"
+ fi
+
+ # Step 4: Build exports
+
+
+
+
+ echo "Name : $name"
+ echo "Origin : $origin"
+ echo "Destination: $destination"
+}
+
+
+
+
+
diff --git a/src/main.sh b/src/main.sh
@@ -2,9 +2,6 @@ cmds=("")
# #include "command/help/index.sh"
# #include "command/install.sh"
-# Filled by preprocess
-NAME=__NAME
-
function main {
cmd=help
@@ -36,6 +33,6 @@ function main {
cmd_$cmd
}
-if [ $(basename $0) == "${NAME}" ]; then
+if [ $(basename $0) == "__NAME" ]; then
main "$@"
fi
diff --git a/src/util/ini.sh b/src/util/ini.sh
@@ -44,7 +44,7 @@ function ini_foreach {
# Output searched or all
if [[ -z "${3}" ]]; then
$1 "$SECTION" "$NAME" "${VALUE}"
- elif [[ "${SECTION}" == "${3}." ]] || [[ "${SECTION}${NAME}" == "${3}" ]]; then
+ elif [[ "${SECTION}" == "${3}" ]] || [[ "${SECTION}${NAME}" == "${3}" ]]; then
$1 "$SECTION" "$NAME" "${VALUE}"
fi