forked from eden-emu/eden
		
	
		
			
	
	
		
			203 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			203 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
|  | #!/bin/sh -e
 | ||
|  | 
 | ||
|  | # 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 | ||
|  | export PACKAGE_NAME="null" | ||
|  | export REPO="null" | ||
|  | export CI="null" | ||
|  | export GIT_HOST="null" | ||
|  | export EXT="null" | ||
|  | export NAME="null" | ||
|  | export DISABLED="null" | ||
|  | export TAG="null" | ||
|  | export ARTIFACT="null" | ||
|  | export SHA="null" | ||
|  | export VERSION="null" | ||
|  | export GIT_VERSION="null" | ||
|  | export DOWNLOAD="null" | ||
|  | export URL="null" | ||
|  | export KEY="null" | ||
|  | export HASH="null" | ||
|  | export ORIGINAL_TAG="null" | ||
|  | export HAS_REPLACE="null" | ||
|  | export VERSION_REPLACE="null" | ||
|  | export HASH_URL="null" | ||
|  | export HASH_SUFFIX="null" | ||
|  | export HASH_ALGO="null" | ||
|  | 
 | ||
|  | ######## | ||
|  | # 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_NAME" | ||
|  | 
 | ||
|  | 	export EXT | ||
|  | 	export NAME | ||
|  | 	export DISABLED | ||
|  | 	export VERSION | ||
|  | 
 | ||
|  | 	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 |