aboutsummaryrefslogtreecommitdiff
path: root/tools/cpm/cmake/package/version.cmake
blob: 0f31c1d55848cfbe9af6ea1f2b1e131e63613d53 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/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")