-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathupdate-generated-sources.sh
executable file
·47 lines (37 loc) · 1.49 KB
/
update-generated-sources.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
#!/usr/bin/env bash
set -o pipefail
set -e
MANIFEST_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
TOOLS_DIR="${TOOLS_DIR:-"$MANIFEST_DIR/tools"}"
GENERATED_SOURCES="generated-sources.json"
MANIFEST_PATH="$MANIFEST_DIR/net.veloren.veloren.yaml"
MODULE_NAME=${MODULE_NAME:-"veloren"}
MODULE_OBJ=$(
python3 -c 'import sys,json,yaml; json.dump(yaml.safe_load(sys.stdin), sys.stdout)' \
< "$MANIFEST_PATH" | \
jq -e \
--arg MODULE_NAME "$MODULE_NAME" \
'.modules | map(select(objects | .name==$MODULE_NAME)) | first'
)
SOURCE_OBJ=$(
jq -e '.sources | map(select(objects | .type=="git")) | first' \
<<<"$MODULE_OBJ"
)
SOURCE_URL="$(jq -r '.url' <<<"$SOURCE_OBJ")"
SOURCE_TAG="$(jq -r '.tag' <<<"$SOURCE_OBJ")"
CLONE_DIR="$(mktemp -d "${TMPDIR:-"/tmp"}/$MODULE_NAME.XXXXXX")"
git clone --depth=1 --branch="$SOURCE_TAG" "$SOURCE_URL" "$CLONE_DIR"
while read -r patch_path; do
echo "Applying patch $patch_path" >> /dev/stderr
patch -d "$CLONE_DIR" -p1 < "$MANIFEST_DIR/$patch_path"
done < <(
jq -r -e '.sources[] | objects | select(.type=="patch") | .path // .paths[]' \
<<<"$MODULE_OBJ"
)
python3 "$TOOLS_DIR/cargo/flatpak-cargo-generator.py" \
--output "$MANIFEST_DIR/$GENERATED_SOURCES" \
"$CLONE_DIR/Cargo.lock"
if ! git -C "$MANIFEST_DIR" diff --exit-code -- "$GENERATED_SOURCES" >> /dev/null; then
git -C "$MANIFEST_DIR" add "$GENERATED_SOURCES"
git -C "$MANIFEST_DIR" commit -m "Update $GENERATED_SOURCES for $MODULE_NAME $SOURCE_TAG"
fi