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.
 
 
 
 
 
 

75 lines
1.6 KiB

#!/usr/bin/env -S cmake -P
# SPDX-FileCopyrightText: Copyright 2026 crueter
# SPDX-License-Identifier: LGPL-3.0-or-later
cmake_minimum_required(VERSION 3.31)
include(${CMAKE_CURRENT_LIST_DIR}/../ScriptUtils.cmake)
function(usage)
echo([=[
Usage: cpmutil.sh package version [PACKAGE] [VERSION]
Update a package's version. If the package uses a sha, you must provide a sha,
and if the package uses a tag, you must provide the fully qualified tag.
]=])
endfunction()
set(NO_ALL TRUE)
# arg parsing
parse_script_args(args)
list(LENGTH args arg_len)
if(arg_len GREATER 0)
list(GET args 0 KEY)
endif()
if(arg_len GREATER 1)
list(GET args 1 NEW_VERSION)
endif()
# checks
if (NOT KEY)
fatal("You must provide a key")
endif()
if (NOT NEW_VERSION)
fatal("You must provide a version")
endif()
# action
get_cpmfile_content(cpmfile)
parse_key("${KEY}")
if (numeric_version)
set(numeric_version ${NEW_VERSION})
get_json_element("${object}" version version)
else()
set(version ${NEW_VERSION})
endif()
get_json_element("${object}" artifact artifact)
# Redo version replacements
process_version_replacements()
get_package_url_object(pkg_url)
get_package_hash("${pkg_url}" pkg_hash)
if (numeric_version)
modify_package_numeric("${object}"
"${NEW_VERSION}" "${pkg_hash}" new_object)
else()
modify_package("${object}" "${NEW_VERSION}" "${pkg_hash}" new_object)
endif()
# update cached cpmfile content
string(JSON cpmfile SET "${cpmfile}" "${key}" "${new_object}")
# write cached cpmfile
get_cpmfile_path(file)
file(WRITE ${file} "${cpmfile}")
format_cpmfile()
echo("-- * Updated")