Browse Source
[tools] refactor: reorganize, commonalities, moar tags, posix compat
[tools] refactor: reorganize, commonalities, moar tags, posix compat
all scripts are fully posix compliant Signed-off-by: crueter <crueter@eden-emu.dev>pull/2666/head
18 changed files with 458 additions and 375 deletions
-
1.shellcheckrc
-
5cpmfile.json
-
16externals/cpmfile.json
-
14tools/cpm-fetch-all.sh
-
1tools/cpm-fetch-all.sh
-
236tools/cpm-fetch.sh
-
11tools/cpm/check-all-hashes.sh
-
8tools/cpm/check-all-updates.sh
-
78tools/cpm/check-hash.sh
-
54tools/cpm/check-updates.sh
-
19tools/cpm/common.sh
-
103tools/cpm/download.sh
-
13tools/cpm/fetch-all.sh
-
39tools/cpm/fetch.sh
-
4tools/cpm/format.sh
-
2tools/cpm/hash.sh
-
225tools/cpm/package.sh
-
2tools/cpm/url-hash.sh
-
2tools/cpm/which.sh
@ -0,0 +1 @@ |
|||
shell=sh |
|||
@ -1,14 +0,0 @@ |
|||
#!/bin/bash -e |
|||
|
|||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
# SPDX-FileCopyrightText: 2025 crueter |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
# shellcheck disable=SC2038 |
|||
# shellcheck disable=SC2016 |
|||
[ -z "$PACKAGES" ] && PACKAGES=$(find . src -maxdepth 3 -name cpmfile.json | xargs jq -s 'reduce .[] as $item ({}; . * $item)') |
|||
LIBS=$(echo "$PACKAGES" | jq -j 'keys_unsorted | join(" ")') |
|||
|
|||
tools/cpm-fetch.sh $LIBS |
|||
@ -0,0 +1 @@ |
|||
cpm/fetch-all.sh |
|||
@ -1,236 +0,0 @@ |
|||
#!/bin/bash -e |
|||
|
|||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
# SPDX-FileCopyrightText: 2025 crueter |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
[ -z "$CPM_SOURCE_CACHE" ] && CPM_SOURCE_CACHE=$PWD/.cache/cpm |
|||
|
|||
mkdir -p $CPM_SOURCE_CACHE |
|||
|
|||
# fetch json once to make lives easier |
|||
# shellcheck disable=SC2038 |
|||
[ -z "$PACKAGES" ] && PACKAGES=$(find . src -maxdepth 3 -name cpmfile.json | xargs jq -s 'reduce .[] as $item ({}; . * $item)') |
|||
|
|||
ROOTDIR="$PWD" |
|||
|
|||
TMP=$(mktemp -d) |
|||
|
|||
download_package() { |
|||
FILENAME=$(basename "$DOWNLOAD") |
|||
|
|||
OUTFILE="$TMP/$FILENAME" |
|||
|
|||
LOWER_PACKAGE=$(tr '[:upper:]' '[:lower:]' <<< "$PACKAGE_NAME") |
|||
OUTDIR="${CPM_SOURCE_CACHE}/${LOWER_PACKAGE}/${KEY}" |
|||
[ -d "$OUTDIR" ] && return |
|||
|
|||
curl "$DOWNLOAD" -sS -L -o "$OUTFILE" |
|||
|
|||
ACTUAL_HASH=$(${HASH_ALGO}sum "$OUTFILE" | cut -d" " -f1) |
|||
[ "$ACTUAL_HASH" != "$HASH" ] && echo "!! $FILENAME did not match expected hash; expected $HASH but got $ACTUAL_HASH" && exit 1 |
|||
|
|||
mkdir -p "$OUTDIR" |
|||
|
|||
pushd "$OUTDIR" > /dev/null |
|||
|
|||
case "$FILENAME" in |
|||
(*.7z) |
|||
7z x "$OUTFILE" > /dev/null |
|||
;; |
|||
(*.tar*) |
|||
tar xf "$OUTFILE" > /dev/null |
|||
;; |
|||
(*.zip) |
|||
unzip "$OUTFILE" > /dev/null |
|||
;; |
|||
esac |
|||
|
|||
# basically if only one real item exists at the top we just move everything from there |
|||
# since github and some vendors hate me |
|||
DIRS=$(find -maxdepth 1 -type d -o -type f) |
|||
|
|||
# thanks gnu |
|||
if [ "$(wc -l <<< "$DIRS")" -eq 2 ]; then |
|||
SUBDIR=$(find . -maxdepth 1 -type d -not -name ".") |
|||
mv "$SUBDIR"/* . |
|||
mv "$SUBDIR"/.* . 2>/dev/null || true |
|||
rmdir "$SUBDIR" |
|||
fi |
|||
|
|||
if grep -e "patches" <<< "$JSON" > /dev/null; then |
|||
PATCHES=$(jq -r '.patches | join(" ")' <<< "$JSON") |
|||
for patch in $PATCHES; do |
|||
patch --binary -p1 < "$ROOTDIR"/.patch/$package/$patch |
|||
done |
|||
fi |
|||
|
|||
popd > /dev/null |
|||
} |
|||
|
|||
ci_package() { |
|||
EXT=$(jq -r '.extension' <<< "$JSON") |
|||
[ "$EXT" = null ] && EXT="tar.zst" |
|||
|
|||
VERSION=$(jq -r ".version" <<< "$JSON") |
|||
|
|||
NAME=$(jq -r ".name" <<< "$JSON") |
|||
[ "$NAME" = null ] && NAME="$PACKAGE" |
|||
|
|||
PACKAGE=$(jq -r ".package | \"$package\"" <<< "$JSON") |
|||
|
|||
DISABLED=$(jq -j '.disabled_platforms' <<< "$JSON") |
|||
|
|||
[ "$REPO" = null ] && echo "No repo defined for CI package $package" && return |
|||
|
|||
echo "-- CI package $PACKAGE" |
|||
|
|||
for platform in windows-amd64 windows-arm64 android solaris-amd64 freebsd-amd64 linux-amd64 linux-aarch64 macos-universal; do |
|||
echo "-- * platform $platform" |
|||
|
|||
case $DISABLED in |
|||
(*"$platform"*) |
|||
echo "-- * -- disabled" |
|||
continue |
|||
;; |
|||
(*) ;; |
|||
esac |
|||
|
|||
FILENAME="${NAME}-${platform}-${VERSION}.${EXT}" |
|||
DOWNLOAD="https://$GIT_HOST/${REPO}/releases/download/v${VERSION}/${FILENAME}" |
|||
PACKAGE_NAME="$PACKAGE" |
|||
KEY=$platform |
|||
|
|||
LOWER_PACKAGE=$(tr '[:upper:]' '[:lower:]' <<< "$PACKAGE_NAME") |
|||
OUTDIR="${CPM_SOURCE_CACHE}/${LOWER_PACKAGE}/${KEY}" |
|||
[ -d "$OUTDIR" ] && continue |
|||
|
|||
HASH_ALGO=$(jq -r ".hash_algo" <<< "$JSON") |
|||
[ "$HASH_ALGO" = null ] && HASH_ALGO=sha512 |
|||
|
|||
HASH_SUFFIX="${HASH_ALGO}sum" |
|||
HASH_URL="${DOWNLOAD}.${HASH_SUFFIX}" |
|||
|
|||
HASH=$(curl "$HASH_URL" -sS -q -L -o -) |
|||
|
|||
download_package |
|||
done |
|||
} |
|||
|
|||
for package in "$@" |
|||
do |
|||
# prepare for cancer |
|||
JSON=$(echo "$PACKAGES" | jq -r ".\"$package\" | select( . != null )") |
|||
|
|||
[ -z "$JSON" ] && echo "!! No cpmfile definition for $package" && continue |
|||
|
|||
PACKAGE_NAME=$(jq -r ".package" <<< "$JSON") |
|||
[ "$PACKAGE_NAME" = null ] && PACKAGE_NAME="$package" |
|||
|
|||
GIT_HOST=$(jq -r ".git_host" <<< "$JSON") |
|||
[ "$GIT_HOST" = null ] && GIT_HOST=github.com |
|||
|
|||
REPO=$(jq -r ".repo" <<< "$JSON") |
|||
|
|||
CI=$(jq -r ".ci" <<< "$JSON") |
|||
if [ "$CI" != null ]; then |
|||
ci_package |
|||
continue |
|||
fi |
|||
|
|||
VERSION=$(jq -r ".version" <<< "$JSON") |
|||
GIT_VERSION=$(jq -r ".git_version" <<< "$JSON") |
|||
|
|||
[ "$GIT_VERSION" = null ] && GIT_VERSION="$VERSION" |
|||
|
|||
# url parsing |
|||
URL=$(jq -r ".url" <<< "$JSON") |
|||
SHA=$(jq -r ".sha" <<< "$JSON") |
|||
|
|||
VERSION=$(jq -r ".version" <<< "$JSON") |
|||
GIT_VERSION=$(jq -r ".git_version" <<< "$JSON") |
|||
|
|||
if [ "$GIT_VERSION" != null ]; then |
|||
VERSION_REPLACE="$GIT_VERSION" |
|||
else |
|||
VERSION_REPLACE="$VERSION" |
|||
fi |
|||
|
|||
TAG=$(jq -r ".tag" <<< "$JSON") |
|||
|
|||
TAG=$(sed "s/%VERSION%/$VERSION_REPLACE/" <<< $TAG) |
|||
|
|||
ARTIFACT=$(jq -r ".artifact" <<< "$JSON") |
|||
ARTIFACT=$(sed "s/%VERSION%/$VERSION_REPLACE/" <<< $ARTIFACT) |
|||
ARTIFACT=$(sed "s/%TAG%/$TAG/" <<< $ARTIFACT) |
|||
|
|||
if [ "$URL" != "null" ]; then |
|||
DOWNLOAD="$URL" |
|||
elif [ "$REPO" != "null" ]; then |
|||
GIT_URL="https://$GIT_HOST/$REPO" |
|||
|
|||
BRANCH=$(jq -r ".branch" <<< "$JSON") |
|||
|
|||
if [ "$TAG" != "null" ]; then |
|||
if [ "$ARTIFACT" != "null" ]; then |
|||
DOWNLOAD="${GIT_URL}/releases/download/${TAG}/${ARTIFACT}" |
|||
else |
|||
DOWNLOAD="${GIT_URL}/archive/refs/tags/${TAG}.tar.gz" |
|||
fi |
|||
elif [ "$SHA" != "null" ]; then |
|||
DOWNLOAD="${GIT_URL}/archive/${SHA}.zip" |
|||
else |
|||
if [ "$BRANCH" = null ]; then |
|||
BRANCH=master |
|||
fi |
|||
|
|||
DOWNLOAD="${GIT_URL}/archive/refs/heads/${BRANCH}.zip" |
|||
fi |
|||
else |
|||
echo "!! No repo or URL defined for $package" |
|||
continue |
|||
fi |
|||
|
|||
# key parsing |
|||
KEY=$(jq -r ".key" <<< "$JSON") |
|||
|
|||
if [ "$KEY" = null ]; then |
|||
if [ "$SHA" != null ]; then |
|||
KEY=$(cut -c1-4 - <<< "$SHA") |
|||
elif [ "$GIT_VERSION" != null ]; then |
|||
KEY="$GIT_VERSION" |
|||
elif [ "$TAG" != null ]; then |
|||
KEY="$TAG" |
|||
elif [ "$VERSION" != null ]; then |
|||
KEY="$VERSION" |
|||
else |
|||
echo "!! No valid key could be determined for $package. Must define one of: key, sha, tag, version, git_version" |
|||
continue |
|||
fi |
|||
fi |
|||
|
|||
echo "-- Downloading regular package $package, with key $KEY, from $DOWNLOAD" |
|||
|
|||
# hash parsing |
|||
HASH_ALGO=$(jq -r ".hash_algo" <<< "$JSON") |
|||
[ "$HASH_ALGO" = null ] && HASH_ALGO=sha512 |
|||
|
|||
HASH=$(jq -r ".hash" <<< "$JSON") |
|||
|
|||
if [ "$HASH" = null ]; then |
|||
HASH_SUFFIX="${HASH_ALGO}sum" |
|||
HASH_URL=$(jq -r ".hash_url" <<< "$JSON") |
|||
|
|||
if [ "$HASH_URL" = null ]; then |
|||
HASH_URL="${DOWNLOAD}.${HASH_SUFFIX}" |
|||
fi |
|||
|
|||
HASH=$(curl "$HASH_URL" -Ss -L -o -) |
|||
fi |
|||
|
|||
download_package |
|||
done |
|||
|
|||
rm -rf $TMP |
|||
@ -0,0 +1,19 @@ |
|||
#!/bin/sh -e |
|||
|
|||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
# SPDX-FileCopyrightText: 2025 crueter |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
# shellcheck disable=SC2038 |
|||
# shellcheck disable=SC2016 |
|||
[ -z "$PACKAGES" ] && PACKAGES=$(find . src -maxdepth 3 -name cpmfile.json | xargs jq -s 'reduce .[] as $item ({}; . * $item)') |
|||
LIBS=$(echo "$PACKAGES" | jq -j 'keys_unsorted | join(" ")') |
|||
|
|||
export PACKAGES |
|||
export LIBS |
|||
|
|||
value() { |
|||
echo "$JSON" | jq -r ".$1" |
|||
} |
|||
@ -0,0 +1,103 @@ |
|||
#!/bin/sh -e |
|||
|
|||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
# SPDX-FileCopyrightText: 2025 crueter |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
# env vars: |
|||
# - UPDATE: fix hashes if needed |
|||
|
|||
# shellcheck disable=SC1091 |
|||
. tools/cpm/common.sh |
|||
|
|||
download_package() { |
|||
FILENAME=$(basename "$DOWNLOAD") |
|||
|
|||
OUTFILE="$TMP/$FILENAME" |
|||
|
|||
LOWER_PACKAGE=$(echo "$PACKAGE_NAME" | tr '[:upper:]' '[:lower:]') |
|||
OUTDIR="${CPM_SOURCE_CACHE}/${LOWER_PACKAGE}/${KEY}" |
|||
[ -d "$OUTDIR" ] && return |
|||
|
|||
curl "$DOWNLOAD" -sS -L -o "$OUTFILE" |
|||
|
|||
ACTUAL_HASH=$("${HASH_ALGO}"sum "$OUTFILE" | cut -d" " -f1) |
|||
[ "$ACTUAL_HASH" != "$HASH" ] && echo "!! $FILENAME did not match expected hash; expected $HASH but got $ACTUAL_HASH" && exit 1 |
|||
|
|||
mkdir -p "$OUTDIR" |
|||
|
|||
PREVDIR="$PWD" |
|||
cd "$OUTDIR" |
|||
|
|||
case "$FILENAME" in |
|||
(*.7z) |
|||
7z x "$OUTFILE" > /dev/null |
|||
;; |
|||
(*.tar*) |
|||
tar xf "$OUTFILE" > /dev/null |
|||
;; |
|||
(*.zip) |
|||
unzip "$OUTFILE" > /dev/null |
|||
;; |
|||
esac |
|||
|
|||
# basically if only one real item exists at the top we just move everything from there |
|||
# since github and some vendors hate me |
|||
DIRS=$(find . -maxdepth 1 -type d -o -type f) |
|||
|
|||
# thanks gnu |
|||
if [ "$(echo "$DIRS" | wc -l)" -eq 2 ]; then |
|||
SUBDIR=$(find . -maxdepth 1 -type d -not -name ".") |
|||
mv "$SUBDIR"/* . |
|||
mv "$SUBDIR"/.* . 2>/dev/null || true |
|||
rmdir "$SUBDIR" |
|||
fi |
|||
|
|||
if echo "$JSON" | grep -e "patches" > /dev/null; then |
|||
PATCHES=$(echo "$JSON" | jq -r '.patches | join(" ")') |
|||
for patch in $PATCHES; do |
|||
# shellcheck disable=SC2154 |
|||
patch --binary -p1 < "$ROOTDIR/.patch/$package/$patch" |
|||
done |
|||
fi |
|||
|
|||
cd "$PREVDIR" |
|||
} |
|||
|
|||
ci_package() { |
|||
[ "$REPO" = null ] && echo "-- ! No repo defined" && return |
|||
|
|||
echo "-- CI package $PACKAGE_NAME" |
|||
|
|||
for platform in windows-amd64 windows-arm64 android solaris-amd64 freebsd-amd64 linux-amd64 linux-aarch64 macos-universal; do |
|||
echo "-- * platform $platform" |
|||
|
|||
case $DISABLED in |
|||
(*"$platform"*) |
|||
echo "-- * -- disabled" |
|||
continue |
|||
;; |
|||
(*) ;; |
|||
esac |
|||
|
|||
FILENAME="${NAME}-${platform}-${VERSION}.${EXT}" |
|||
DOWNLOAD="https://$GIT_HOST/${REPO}/releases/download/v${VERSION}/${FILENAME}" |
|||
KEY=$platform |
|||
|
|||
LOWER_PACKAGE=$(echo "$PACKAGE_NAME" | tr '[:upper:]' '[:lower:]') |
|||
OUTDIR="${CPM_SOURCE_CACHE}/${LOWER_PACKAGE}/${KEY}" |
|||
[ -d "$OUTDIR" ] && continue |
|||
|
|||
HASH_ALGO=$(value "hash_algo") |
|||
[ "$HASH_ALGO" = null ] && HASH_ALGO=sha512 |
|||
|
|||
HASH_SUFFIX="${HASH_ALGO}sum" |
|||
HASH_URL="${DOWNLOAD}.${HASH_SUFFIX}" |
|||
|
|||
HASH=$(curl "$HASH_URL" -sS -q -L -o -) |
|||
|
|||
download_package |
|||
done |
|||
} |
|||
@ -0,0 +1,13 @@ |
|||
#!/bin/sh -e |
|||
|
|||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
# SPDX-FileCopyrightText: 2025 crueter |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
# shellcheck disable=SC1091 |
|||
. tools/cpm/common.sh |
|||
|
|||
# shellcheck disable=SC2086 |
|||
tools/cpm/fetch.sh $LIBS |
|||
@ -0,0 +1,39 @@ |
|||
#!/bin/sh -e |
|||
|
|||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
# SPDX-FileCopyrightText: 2025 crueter |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
[ -z "$CPM_SOURCE_CACHE" ] && CPM_SOURCE_CACHE=$PWD/.cache/cpm |
|||
|
|||
mkdir -p "$CPM_SOURCE_CACHE" |
|||
|
|||
# shellcheck disable=SC1091 |
|||
. tools/cpm/common.sh |
|||
|
|||
# shellcheck disable=SC1091 |
|||
. tools/cpm/download.sh |
|||
|
|||
# shellcheck disable=SC2034 |
|||
ROOTDIR="$PWD" |
|||
|
|||
TMP=$(mktemp -d) |
|||
|
|||
# shellcheck disable=SC2034 |
|||
for package in "$@" |
|||
do |
|||
export package |
|||
# shellcheck disable=SC1091 |
|||
. tools/cpm/package.sh |
|||
|
|||
if [ "$CI" = "true" ]; then |
|||
ci_package |
|||
else |
|||
echo "-- Downloading regular package $package, with key $KEY, from $DOWNLOAD" |
|||
download_package |
|||
fi |
|||
done |
|||
|
|||
rm -rf "$TMP" |
|||
@ -0,0 +1,225 @@ |
|||
#!/bin/sh -e |
|||
|
|||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
# SPDX-FileCopyrightText: 2025 crueter |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
# env vars: |
|||
# - UPDATE: fix hashes if needed |
|||
|
|||
# shellcheck disable=SC1091 |
|||
. tools/cpm/common.sh |
|||
|
|||
[ -z "$package" ] && echo "Package was not specified" && exit 0 |
|||
|
|||
# shellcheck disable=SC2153 |
|||
JSON=$(echo "$PACKAGES" | jq -r ".\"$package\" | select( . != null )") |
|||
|
|||
[ -z "$JSON" ] && echo "!! No cpmfile definition for $package" && exit 1 |
|||
|
|||
# unset stuff |
|||
unset PACKAGE_NAME |
|||
unset REPO |
|||
unset CI |
|||
unset GIT_HOST |
|||
unset EXT |
|||
unset NAME |
|||
unset DISABLED |
|||
unset TAG |
|||
unset ARTIFACT |
|||
unset SHA |
|||
unset VERSION |
|||
unset GIT_VERSION |
|||
unset DOWNLOAD |
|||
unset URL |
|||
unset KEY |
|||
unset HASH |
|||
|
|||
unset ORIGINAL_TAG |
|||
unset HAS_REPLACE |
|||
unset VERSION_REPLACE |
|||
|
|||
unset HASH_URL |
|||
unset HASH_SUFFIX |
|||
unset HASH_ALGO |
|||
|
|||
######## |
|||
# Meta # |
|||
######## |
|||
|
|||
REPO=$(value "repo") |
|||
CI=$(value "ci") |
|||
|
|||
PACKAGE_NAME=$(value "package") |
|||
[ "$PACKAGE_NAME" = null ] && PACKAGE_NAME="$package" |
|||
|
|||
GIT_HOST=$(value "git_host") |
|||
[ "$GIT_HOST" = null ] && GIT_HOST=github.com |
|||
|
|||
export PACKAGE_NAME |
|||
export REPO |
|||
export CI |
|||
export GIT_HOST |
|||
|
|||
###################### |
|||
# CI Package Parsing # |
|||
###################### |
|||
|
|||
VERSION=$(value "version") |
|||
|
|||
if [ "$CI" = "true" ]; then |
|||
EXT=$(value "extension") |
|||
[ "$EXT" = null ] && EXT="tar.zst" |
|||
|
|||
NAME=$(value "name") |
|||
DISABLED=$(echo "$JSON" | jq -j '.disabled_platforms') |
|||
|
|||
[ "$NAME" = null ] && NAME="$PACKAGE" |
|||
|
|||
export EXT |
|||
export NAME |
|||
export DISABLED |
|||
export VERSION |
|||
|
|||
# slight annoyance |
|||
TAG=null |
|||
ARTIFACT=null |
|||
SHA=null |
|||
VERSION=null |
|||
GIT_VERSION=null |
|||
DOWNLOAD=null |
|||
URL=null |
|||
KEY=null |
|||
HASH=null |
|||
ORIGINAL_TAG=null |
|||
HAS_REPLACE=null |
|||
VERSION_REPLACE=null |
|||
HASH_URL=null |
|||
HASH_SUFFIX=null |
|||
HASH_ALGO=null |
|||
|
|||
return 0 |
|||
fi |
|||
|
|||
############## |
|||
# Versioning # |
|||
############## |
|||
|
|||
TAG=$(value "tag") |
|||
ARTIFACT=$(value "artifact") |
|||
SHA=$(value "sha") |
|||
GIT_VERSION=$(value "git_version") |
|||
|
|||
[ "$GIT_VERSION" = null ] && GIT_VERSION="$VERSION" |
|||
|
|||
if [ "$GIT_VERSION" != null ]; then |
|||
VERSION_REPLACE="$GIT_VERSION" |
|||
else |
|||
VERSION_REPLACE="$VERSION" |
|||
fi |
|||
|
|||
echo "$TAG" | grep -e "%VERSION%" > /dev/null && HAS_REPLACE=true || HAS_REPLACE=false |
|||
ORIGINAL_TAG="$TAG" |
|||
|
|||
TAG=$(echo "$TAG" | sed "s/%VERSION%/$VERSION_REPLACE/g") |
|||
ARTIFACT=$(echo "$ARTIFACT" | sed "s/%VERSION%/$VERSION_REPLACE/g") |
|||
ARTIFACT=$(echo "$ARTIFACT" | sed "s/%TAG%/$TAG/g") |
|||
|
|||
export TAG |
|||
export ARTIFACT |
|||
export SHA |
|||
export VERSION |
|||
export GIT_VERSION |
|||
export ORIGINAL_TAG |
|||
export HAS_REPLACE |
|||
export VERSION_REPLACE |
|||
|
|||
############### |
|||
# URL Parsing # |
|||
############### |
|||
|
|||
URL=$(value "url") |
|||
|
|||
if [ "$URL" != "null" ]; then |
|||
DOWNLOAD="$URL" |
|||
elif [ "$REPO" != "null" ]; then |
|||
GIT_URL="https://$GIT_HOST/$REPO" |
|||
|
|||
BRANCH=$(value "branch") |
|||
|
|||
if [ "$TAG" != "null" ]; then |
|||
if [ "$ARTIFACT" != "null" ]; then |
|||
DOWNLOAD="${GIT_URL}/releases/download/${TAG}/${ARTIFACT}" |
|||
else |
|||
DOWNLOAD="${GIT_URL}/archive/refs/tags/${TAG}.tar.gz" |
|||
fi |
|||
elif [ "$SHA" != "null" ]; then |
|||
DOWNLOAD="${GIT_URL}/archive/${SHA}.zip" |
|||
else |
|||
if [ "$BRANCH" = null ]; then |
|||
BRANCH=master |
|||
fi |
|||
|
|||
DOWNLOAD="${GIT_URL}/archive/refs/heads/${BRANCH}.zip" |
|||
fi |
|||
else |
|||
echo "!! No repo or URL defined for $package" |
|||
exit 1 |
|||
fi |
|||
|
|||
export DOWNLOAD |
|||
export URL |
|||
|
|||
############### |
|||
# Key Parsing # |
|||
############### |
|||
|
|||
KEY=$(value "key") |
|||
|
|||
if [ "$KEY" = null ]; then |
|||
if [ "$SHA" != null ]; then |
|||
KEY=$(echo "$SHA" | cut -c1-4) |
|||
elif [ "$GIT_VERSION" != null ]; then |
|||
KEY="$GIT_VERSION" |
|||
elif [ "$TAG" != null ]; then |
|||
KEY="$TAG" |
|||
elif [ "$VERSION" != null ]; then |
|||
KEY="$VERSION" |
|||
else |
|||
echo "!! No valid key could be determined for $package. Must define one of: key, sha, tag, version, git_version" |
|||
exit 1 |
|||
fi |
|||
fi |
|||
|
|||
export KEY |
|||
|
|||
################ |
|||
# Hash Parsing # |
|||
################ |
|||
|
|||
HASH_ALGO=$(value "hash_algo") |
|||
[ "$HASH_ALGO" = null ] && HASH_ALGO=sha512 |
|||
|
|||
HASH=$(value "hash") |
|||
|
|||
if [ "$HASH" = null ]; then |
|||
HASH_SUFFIX="${HASH_ALGO}sum" |
|||
HASH_URL=$(value "hash_url") |
|||
|
|||
if [ "$HASH_URL" = null ]; then |
|||
HASH_URL="${DOWNLOAD}.${HASH_SUFFIX}" |
|||
fi |
|||
|
|||
HASH=$(curl "$HASH_URL" -Ss -L -o -) |
|||
else |
|||
HASH_URL=null |
|||
HASH_SUFFIX=null |
|||
fi |
|||
|
|||
export HASH_URL |
|||
export HASH_SUFFIX |
|||
export HASH |
|||
export HASH_ALGO |
|||
export JSON |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue