Files

106 lines
4.8 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
export PRODUCT=pezkuwi
export VERSION=${VERSION:-stable2409}
export ENGINE=${ENGINE:-podman}
export REF1=${REF1:-'HEAD'}
export REF2=${REF2}
export RUSTC_STABLE=${RUSTC_STABLE:-'1.0'}
export NO_RUNTIMES=${NO_RUNTIMES:-'false'}
export CRATES_ONLY=${CRATES_ONLY:-'false'}
PROJECT_ROOT=`git rev-parse --show-toplevel`
echo $PROJECT_ROOT
TMP=${TMP:-$(mktemp -d)}
TEMPLATE_AUDIENCE="${PROJECT_ROOT}/scripts/release/templates/audience.md.tera"
TEMPLATE_CHANGELOG="${PROJECT_ROOT}/scripts/release/templates/changelog.md.tera"
DATA_JSON="${TMP}/data.json"
CONTEXT_JSON="${TMP}/context.json"
echo -e "TEMPLATE_AUDIENCE: \t$TEMPLATE_AUDIENCE"
echo -e "DATA_JSON: \t\t$DATA_JSON"
echo -e "CONTEXT_JSON: \t\t$CONTEXT_JSON"
# Create output folder
OUTPUT="${TMP}/changelogs/$PRODUCT/$VERSION"
echo -e "OUTPUT: \t\t$OUTPUT"
mkdir -p $OUTPUT
$ENGINE run --rm -v ${PROJECT_ROOT}:/repo pezkuwichain/prdoc load -d "prdoc/$VERSION" --json > $DATA_JSON
cat $DATA_JSON | jq ' { "prdoc" : .}' > $CONTEXT_JSON
# Fetch the list of valid audiences and their descriptions
SCHEMA_URL=https://raw.githubusercontent.com/pezkuwichain/kurdistan-sdk/master/prdoc/schema_user.json
SCHEMA=$(curl -s $SCHEMA_URL | sed 's|^//.*||')
aud_desc_array=()
while IFS= read -r line; do
audience=$(jq -r '.const' <<< "$line" )
description=$(jq -r '.description' <<< "$line")
if [ -n "$audience" ] && [ -n "$description" ]; then
aud_desc_array+=("($audience; $description)")
fi
done < <(jq -c '."$defs".audience_id.oneOf[]' <<< "$SCHEMA")
# Generate a release notes doc per audience
for tuple in "${aud_desc_array[@]}"; do
audience=$(echo "$tuple" | cut -d ';' -f 1 | sed 's/(//')
audience_id="$(tr [A-Z] [a-z] <<< "$audience")"
audience_id="$(tr ' ' '_' <<< "$audience_id")"
description=$(echo "$tuple" | cut -d ';' -f 2 | sed 's/)//')
echo "Processing audience: $audience ($audience_id)"
export TARGET_AUDIENCE="$audience"
export AUDIENCE_DESC="**️ These changes are relevant to:** $description"
tera -t "${TEMPLATE_AUDIENCE}" --env --env-key env "${CONTEXT_JSON}" > "$OUTPUT/relnote_${audience_id}.md"
cat "$OUTPUT/relnote_${audience_id}.md" >> "$PROJECT_ROOT/scripts/release/templates/changelog.md"
done
# Generate a changelog containing list of the commits
echo "Generating changelog..."
tera -t "${TEMPLATE_CHANGELOG}" --env --env-key env "${CONTEXT_JSON}" > "$OUTPUT/relnote_commits.md"
echo "Changelog ready in $OUTPUT/relnote_commits.md"
# Show the files
tree -s -h -c $OUTPUT/
if [[ "$NO_RUNTIMES" == "false" && "$CRATES_ONLY" == "false" ]]; then
ASSET_HUB_ZAGROS_DIGEST=${ASSET_HUB_ZAGROS_DIGEST:-"$PROJECT_ROOT/scripts/release/digests/asset-hub-zagros-srtool-digest.json"}
BRIDGE_HUB_ZAGROS_DIGEST=${BRIDGE_HUB_ZAGROS_DIGEST:-"$PROJECT_ROOT/scripts/release/digests/bridge-hub-zagros-srtool-digest.json"}
COLLECTIVES_ZAGROS_DIGEST=${COLLECTIVES_ZAGROS_DIGEST:-"$PROJECT_ROOT/scripts/release/digests/collectives-zagros-srtool-digest.json"}
CORETIME_ZAGROS_DIGEST=${CORETIME_ZAGROS_DIGEST:-"$PROJECT_ROOT/scripts/release/digests/coretime-zagros-srtool-digest.json"}
GLUTTON_ZAGROS_DIGEST=${GLUTTON_ZAGROS_DIGEST:-"$PROJECT_ROOT/scripts/release/digests/glutton-zagros-srtool-digest.json"}
PEOPLE_ZAGROS_DIGEST=${PEOPLE_ZAGROS_DIGEST:-"$PROJECT_ROOT/scripts/release/digests/people-zagros-srtool-digest.json"}
ZAGROS_DIGEST=${ZAGROS_DIGEST:-"$PROJECT_ROOT/scripts/release/digests/zagros-srtool-digest.json"}
jq \
--slurpfile srtool_asset_hub_zagros $ASSET_HUB_ZAGROS_DIGEST \
--slurpfile srtool_bridge_hub_zagros $BRIDGE_HUB_ZAGROS_DIGEST \
--slurpfile srtool_collectives_zagros $COLLECTIVES_ZAGROS_DIGEST \
--slurpfile srtool_coretime_zagros $CORETIME_ZAGROS_DIGEST \
--slurpfile srtool_glutton_zagros $GLUTTON_ZAGROS_DIGEST \
--slurpfile srtool_people_zagros $PEOPLE_ZAGROS_DIGEST \
--slurpfile srtool_zagros $ZAGROS_DIGEST \
-n '{
srtool: [
{ order: 10, name: "Zagros", data: $srtool_zagros[0] },
{ order: 11, name: "Zagros AssetHub", data: $srtool_asset_hub_zagros[0] },
{ order: 12, name: "Zagros BridgeHub", data: $srtool_bridge_hub_zagros[0] },
{ order: 13, name: "Zagros Collectives", data: $srtool_collectives_zagros[0] },
{ order: 14, name: "Zagros Coretime", data: $srtool_coretime_zagros[0] },
{ order: 15, name: "Zagros Glutton", data: $srtool_glutton_zagros[0] },
{ order: 16, name: "Zagros People", data: $srtool_people_zagros[0] }
] }' > "$PROJECT_ROOT/scripts/release/context.json"
else
echo '{}' > "$PROJECT_ROOT/scripts/release/context.json"
fi
RELEASE_DIR="$PROJECT_ROOT/scripts/release/"
pushd $RELEASE_DIR >/dev/null
tera --env --env-key env --include-path templates --template templates/template.md.tera context.json > RELEASE_DRAFT.md
popd >/dev/null