diff options
-rwxr-xr-x | redprine | 51 |
1 files changed, 45 insertions, 6 deletions
@@ -61,8 +61,8 @@ function cache_my_pull_requests () { # jq -C '. | map({ html_url, number, user: .user.login, ref: .head.ref, created_at })' pulls.json # jq -C '. | map({ html_url, number, user: .user.login, ref: .head.ref, created_at }) | map(select(.user == "teddywing"))' pulls.json -pull_requests=$(fetch_pull_requests) -cache_my_pull_requests "$pull_requests" +# pull_requests=$(fetch_pull_requests) +# cache_my_pull_requests "$pull_requests" # function compare_with_cache () { function new_pull_requests () { @@ -96,19 +96,58 @@ function extract_redmine_issue_numbers_from_pull_request () { # jq --raw-output 'map(.ref) | .[] | @text' pulls-my.json # jq --raw-output 'map(.ref) | .[] | @text' pulls-my.json | perl -ne '/^(\d{4})-/ && print "$1\n"' +# jq --raw-output '. | map({ html_url, number, user: .user.login, ref: .head.ref, created_at }) | map(select(.user == "teddywing")) | map([.ref, .html_url]) | .[] | @tsv' pulls.json + +function branches_and_pull_request_urls () { + local pull_requests="$1" + + printf "%s\n" "$pull_requests" | + jq --raw-output 'map([.ref, .html_url]) | .[] | @tsv' +} + +function issue_numbers_and_pull_request_urls () { + local pull_requests="$1" + + local branch_and_urls=$(branches_and_pull_request_urls "$pull_requests") + + echo "$branch_and_urls" | + perl -ne '/^(\d{4})-[^\t]*\t(.*)/ && print "$1\t$2\n"' +} + +# jq --raw-output '. | map({ html_url, number, user: .user.login, ref: .head.ref, created_at }) | map(select(.user == "teddywing")) | map([.ref, .html_url]) | .[] | @tsv' pulls.json | perl -ne '/^(\d{4})-[^\t]*\t(.*)/ && print "$1\t$2\n"' + # Updates the "Done", "Status", and "Pull Request" fields for each given issue. function update_redmine_statuses () { - local issue_ids="$1" + local issue_ids_and_urls="$1" - for id in "$issue_ids"; do - update_redmine_status "$id" + for id_and_url in "$issue_ids_and_urls"; do + update_redmine_status "$id_and_url" done } function update_redmine_status () { - local issue_id="$1" + local issue_pr="$1" + + local issue_id=$( + echo "$issue_pr" | + cut -d ' ' -f 1 - + ) + + local pull_request_link=$( + echo "$issue_pr" | + cut -d ' ' -f 2 - + ) curl \ --request PUT \ --location "${REDMINE_BASE_URL}/issues/${issue_id}.json" } + + + +# pull_requests=$(fetch_pull_requests) +# cache_my_pull_requests "$pull_requests" +pr_json=$(new_pull_requests) +issue_prs=$(issue_numbers_and_pull_request_urls "$pr_json") + +update_redmine_statuses "$issue_prs" |