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