mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
* fix(ci): repair staging-ci workflow parsing * fix(ci): chain staging promotion to latest open branch * feat(ci): carry staging batch summaries into release PRs * test(ci): add dry-run dispatch for promotion metadata workflows * fix(ci): fetch only release tags for batch summaries * fix(ci): address review feedback on batch summaries * fix(ci): harden metadata workflows and dedupe body helpers * fix(ci): pass repo explicitly to gh pr list
60 lines
1.6 KiB
Bash
60 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
load_commit_summary() {
|
|
local range="$1"
|
|
local max_commits="${2:-50}"
|
|
local commit_list overflow
|
|
|
|
commit_list="$(git log --oneline --no-merges --reverse "${range}" 2>/dev/null || echo "")"
|
|
if [ -n "${commit_list}" ]; then
|
|
COMMIT_COUNT="$(printf '%s\n' "${commit_list}" | wc -l | tr -d ' ')"
|
|
if [ "${COMMIT_COUNT}" -gt "${max_commits}" ]; then
|
|
COMMIT_MD="$(printf '%s\n' "${commit_list}" | head -n "${max_commits}" | sed 's/^/- /')"
|
|
overflow=$((COMMIT_COUNT - max_commits))
|
|
COMMIT_MD+=$'\n'"- ... and ${overflow} more (see compare view)"
|
|
else
|
|
COMMIT_MD="$(printf '%s\n' "${commit_list}" | sed 's/^/- /')"
|
|
fi
|
|
else
|
|
COMMIT_COUNT=0
|
|
COMMIT_MD="- (no non-merge commits in range)"
|
|
fi
|
|
}
|
|
|
|
replace_marked_section() {
|
|
local body_file="$1"
|
|
local section_file="$2"
|
|
local section_start="$3"
|
|
local section_end="$4"
|
|
local output_file="$5"
|
|
|
|
if grep -qF "${section_start}" "${body_file}" && grep -qF "${section_end}" "${body_file}"; then
|
|
awk -v start="${section_start}" -v end="${section_end}" -v replacement_file="${section_file}" '
|
|
BEGIN {
|
|
while ((getline line < replacement_file) > 0) {
|
|
replacement = replacement line ORS
|
|
}
|
|
in_block = 0
|
|
}
|
|
$0 == start {
|
|
printf "%s", replacement
|
|
in_block = 1
|
|
next
|
|
}
|
|
$0 == end {
|
|
in_block = 0
|
|
next
|
|
}
|
|
!in_block {
|
|
print
|
|
}
|
|
' "${body_file}" > "${output_file}"
|
|
else
|
|
cp "${body_file}" "${output_file}"
|
|
if [ -s "${output_file}" ]; then
|
|
printf '\n\n' >> "${output_file}"
|
|
fi
|
|
cat "${section_file}" >> "${output_file}"
|
|
fi
|
|
}
|