You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
1.8 KiB
84 lines
1.8 KiB
#!/bin/sh -e
|
|
|
|
# SPDX-FileCopyrightText: Copyright 2026 crueter
|
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
RETURN=0
|
|
|
|
usage() {
|
|
cat <<EOF
|
|
Usage: cpmutil.sh package [command]
|
|
|
|
Operate on a package or packages.
|
|
|
|
Commands:
|
|
hash Verify the hash of a package, and update it if needed
|
|
update Check for updates for a package
|
|
fetch Fetch a package and place it in the cache
|
|
add Add a new package
|
|
rm Remove a package
|
|
version Change the version of a package
|
|
which Check if a package is defined
|
|
url Get the download URL for a package
|
|
dir Get the local directory for a package
|
|
reset Reset a fetched package to its original state
|
|
patch Add a patch to a package in the cpmfile
|
|
|
|
EOF
|
|
|
|
exit $RETURN
|
|
}
|
|
|
|
SCRIPTS=$(CDPATH='' cd -- "$(dirname -- "$0")/package" && pwd)
|
|
CMAKE="$CMAKE/package"
|
|
|
|
export SCRIPTS CMAKE
|
|
|
|
filter_args() {
|
|
print_usage=false
|
|
all_flag=false
|
|
commit_flag=false
|
|
filtered=""
|
|
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
-h | --help) print_usage=true ;;
|
|
-a | --all) all_flag=true ;;
|
|
-c | --commit) commit_flag=true ;;
|
|
-ac | -ca)
|
|
commit_flag=true
|
|
all_flag=true
|
|
;;
|
|
*) filtered="$filtered $arg" ;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
while :; do
|
|
case "$1" in
|
|
dir | fetch | hash | reset | rm | url | version | which | update)
|
|
cmd="$1"
|
|
shift
|
|
|
|
filter_args "$@"
|
|
cmake_defines=""
|
|
|
|
if $print_usage; then cmake_defines="$cmake_defines -DPRINT_USAGE=TRUE"; fi
|
|
if $all_flag; then cmake_defines="$cmake_defines -DALL_PACKAGES=TRUE"; fi
|
|
if $commit_flag; then cmake_defines="$cmake_defines -DMAKE_COMMIT=TRUE"; fi
|
|
|
|
# shellcheck disable=SC2086
|
|
cmake $cmake_defines -P "$CMAKE/$cmd.cmake" -- $filtered
|
|
break
|
|
;;
|
|
add | patch)
|
|
cmd="$1"
|
|
shift
|
|
"$SCRIPTS/$cmd".sh "$@"
|
|
break
|
|
;;
|
|
*) usage ;;
|
|
esac
|
|
|
|
shift
|
|
done
|