-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathedit-notes.sh
More file actions
executable file
·51 lines (38 loc) · 1.09 KB
/
edit-notes.sh
File metadata and controls
executable file
·51 lines (38 loc) · 1.09 KB
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
#!/bin/bash
set -euo pipefail
SCRIPT_PATH=$(realpath "$0")
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
. "$SCRIPT_DIR/commit-utils.sh"
. "$SCRIPT_DIR/meta-utils.sh"
print_help() {
echo "usage: $0 <commits>"
echo "commits: commits to edit notes for"
}
if [[ $# -eq 0 ]]; then
print_help
exit 1
fi
COMMITS=()
parse_commitish COMMITS "$@"
EDITOR=$(git var GIT_EDITOR)
for COMMIT in "${COMMITS[@]}"; do
CHANGE_ID=$(git log -1 --format=%B "$COMMIT" | get_change_id)
if [[ -z "$CHANGE_ID" ]]; then
echo "Skipping $COMMIT: no Change-Id found" >&2
continue
fi
echo "Found Change-Id $CHANGE_ID for commit $COMMIT"
TMP_FILE=$(mktemp)
META_CONTENT=$(get_change_id_meta_content "$CHANGE_ID")
NOTE_CONTENT=$(get_commit_git_notes "$COMMIT")
if [[ -n "$META_CONTENT" ]]; then
printf '%s\n' "$META_CONTENT" >"$TMP_FILE"
elif [[ -n "$NOTE_CONTENT" ]]; then
printf '%s\n' "$NOTE_CONTENT" >"$TMP_FILE"
fi
notes_default_message "$COMMIT" >>"$TMP_FILE"
echo "Editing note for $CHANGE_ID"
$EDITOR "$TMP_FILE"
cleanup_notes "$TMP_FILE"
set_change_id_meta_content_from_file "$CHANGE_ID" "$TMP_FILE"
done