-
Notifications
You must be signed in to change notification settings - Fork 7
/
gen_pack.sh
executable file
·144 lines (124 loc) · 3.4 KB
/
gen_pack.sh
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#!/usr/bin/env bash
# Version: 2.7
# Date: 2023-05-22
# This bash script generates a CMSIS Software Pack:
#
set -o pipefail
# Set version of gen pack library
# For available versions see https://github.com/Open-CMSIS-Pack/gen-pack/tags.
# Use the tag name without the prefix "v", e.g., 0.7.0
REQUIRED_GEN_PACK_LIB="0.8.4"
# Set default command line arguments
DEFAULT_ARGS=(-k -c "v")
# Pack warehouse directory - destination
# Default: ./output
#
# PACK_OUTPUT=./output
# Temporary pack build directory,
# Default: ./build
#
# PACK_BUILD=./build
# Specify directory names to be added to pack base directory
# An empty list defaults to all folders next to this script.
# Default: empty (all folders)
#
# PACK_DIRS="
# <list directories here>
# "
# Specify file names to be added to pack base directory
# Default: empty
#
# PACK_BASE_FILES="
# LICENSE
# <list files here>
# "
# Specify file names to be deleted from pack build directory
# Default: empty
#
# PACK_DELETE_FILES="
# <list delete files here>
# "
# Specify patches to be applied
# Default: empty
#
# PACK_PATCH_FILES="
# <list patches here>
# "
# Specify addition argument to packchk
# Default: empty
#
# PACKCHK_ARGS=()
# Specify additional dependencies for packchk
# Default: empty
#
# PACKCHK_DEPS="
# <list pdsc files here>
# "
# Optional: restrict fallback modes for changelog generation
# Default: full
# Values:
# - full Tag annotations, release descriptions, or commit messages (in order)
# - release Tag annotations, or release descriptions (in order)
# - tag Tag annotations only
#
# PACK_CHANGELOG_MODE="<full|release|tag>"
#
# custom pre-processing steps
#
# usage: preprocess <build>
# <build> The build folder
#
function preprocess() {
# add custom steps here to be executed
# before populating the pack build folder
return 0
}
#
# custom post-processing steps
#
# usage: postprocess <build>
# <build> The build folder
#
function postprocess() {
# add custom steps here to be executed
# after populating the pack build folder
# but before archiving the pack into output folder
return 0
}
############ DO NOT EDIT BELOW ###########
function install_lib() {
local URL="https://github.com/Open-CMSIS-Pack/gen-pack/archive/refs/tags/v$1.tar.gz"
local STATUS=$(curl -sLI "${URL}" | grep "^HTTP" | tail -n 1 | cut -d' ' -f2 || echo "$((600+$?))")
if [[ $STATUS -ge 400 ]]; then
echo "Wrong/unavailable gen-pack lib version '$1'!" >&2
echo "Check REQUIRED_GEN_PACK_LIB variable." >&2
echo "For available versions see https://github.com/Open-CMSIS-Pack/gen-pack/tags." >&2
exit 1
fi
echo "Downloading gen-pack lib version '$1' to '$2' ..."
mkdir -p "$2"
curl -L "${URL}" -s | tar -xzf - --strip-components 1 -C "$2" || exit 1
}
function load_lib() {
if [[ -d ${GEN_PACK_LIB} ]]; then
. "${GEN_PACK_LIB}/gen-pack"
return 0
fi
local GLOBAL_LIB="/usr/local/share/gen-pack/${REQUIRED_GEN_PACK_LIB}"
local USER_LIB="${HOME}/.local/share/gen-pack/${REQUIRED_GEN_PACK_LIB}"
if [[ ! -d "${GLOBAL_LIB}" && ! -d "${USER_LIB}" ]]; then
echo "Required gen_pack lib not found!" >&2
install_lib "${REQUIRED_GEN_PACK_LIB}" "${USER_LIB}"
fi
if [[ -d "${GLOBAL_LIB}" ]]; then
. "${GLOBAL_LIB}/gen-pack"
elif [[ -d "${USER_LIB}" ]]; then
. "${USER_LIB}/gen-pack"
else
echo "Required gen-pack lib is not installed!" >&2
exit 1
fi
}
load_lib
gen_pack "${DEFAULT_ARGS[@]}" "$@"
exit 0