From b1d968ae7c5f4af407de9eea9a280bb2fbf00cb8 Mon Sep 17 00:00:00 2001 From: wrightbradley Date: Tue, 29 Oct 2024 15:53:16 -0400 Subject: [PATCH] feat: improve GitHub PR creation Signed-off-by: wrightbradley --- home/bin/executable_get-jira-title.py | 45 +++++++++++++++++++ home/dot_config/lazygit/config.yml | 2 +- home/encrypted_dot_work-aliases.asc | 64 +++++++++++++-------------- 3 files changed, 78 insertions(+), 33 deletions(-) create mode 100644 home/bin/executable_get-jira-title.py diff --git a/home/bin/executable_get-jira-title.py b/home/bin/executable_get-jira-title.py new file mode 100644 index 0000000..fad128d --- /dev/null +++ b/home/bin/executable_get-jira-title.py @@ -0,0 +1,45 @@ +# /// script +# requires-python = ">=3.12" +# dependencies = [ +# "requests", +# ] +# /// +import requests +from requests.auth import HTTPBasicAuth +import argparse +import json +import os + +jira_home_directory = os.environ["JIRA_CONFIG_HOME"] +config_path = os.path.join(jira_home_directory, "jira-config.json") +with open(config_path) as config_file: + config = json.load(config_file) + +jira_url = config["jira_url"] +api_token = config["api_token"] +email = config["email"] + +parser = argparse.ArgumentParser( + description="Get the title of a Jira ticket using the ticket ID." +) +parser.add_argument( + "ticket_id", nargs="?", default=None, help="The ID of the Jira ticket (optional)" +) +args = parser.parse_args() +if args.ticket_id is None: + print("WIP") +else: + ticket_id = args.ticket_id + + headers = {"Accept": "application/json", "Content-Type": "application/json"} + response = requests.get( + f"{jira_url}/rest/api/3/issue/{ticket_id}", + headers=headers, + auth=HTTPBasicAuth(email, api_token), + ) + if response.status_code == 200: + data = response.json() + title = data["fields"]["summary"] + print(f"{ticket_id}: {title}") + else: + print(f"{ticket_id}") diff --git a/home/dot_config/lazygit/config.yml b/home/dot_config/lazygit/config.yml index 75a64ab..3bf1194 100644 --- a/home/dot_config/lazygit/config.yml +++ b/home/dot_config/lazygit/config.yml @@ -22,7 +22,7 @@ os: edit: 'nvim --server $NVIM --remote-tab {{filename}}' customCommands: - key: "" - command: "unset GITHUB_TOKEN; JIRA_ID=$(git symbolic-ref --short HEAD | grep -e '\\b[A-Z][A-Z0-9_]\\+-[1-9][0-9]\\+' -o); TITLE=$(uv run ~/bin/get-jira-title.py ${JIRA_ID}); BODY=$(git log --graph --pretty=format:'%C(bold yellow)%h%C(reset) %s%C(auto)%d%C(reset)' origin/main..HEAD | sed 's/\"//g'); echo $BODY > /tmp/body.txt; gh pr create --body \"${BODY}\" --title \"${TITLE}\" --assignee @me {{.Form.DRAFT}} {{.Form.CLOUDOPS}}" + command: "unset GITHUB_TOKEN; JIRA_ID=$(git symbolic-ref --short HEAD | grep -e '\\b[A-Z][A-Z0-9_]\\+-[1-9][0-9]\\+' -o); TITLE=$(uv run ~/bin/get-jira-title.py ${JIRA_ID}); BODY=$(git log --date-order --pretty=format:'%C(bold yellow)%h%C(reset) %s%C(auto)%d%C(reset)%n * %b' origin/main..HEAD | grep -v Signed-off-by | sed 's/\"//g'); echo $BODY > /tmp/body.txt; gh pr create --body \"${BODY}\" --title \"${TITLE}\" --assignee @me {{.Form.DRAFT}} {{.Form.CLOUDOPS}}" context: "global" loadingText: "Creating pull request on GitHub" prompts: diff --git a/home/encrypted_dot_work-aliases.asc b/home/encrypted_dot_work-aliases.asc index 8cae2d3..003687a 100644 --- a/home/encrypted_dot_work-aliases.asc +++ b/home/encrypted_dot_work-aliases.asc @@ -1,35 +1,35 @@ -----BEGIN PGP MESSAGE----- -hF4DAAAAAAAAAAASAQdA4KccKgOIhPRz2OZV+YEFdA/6/tZF3J3mUr8/1uBu6hIw -Og7elGbGcYAuzBYg/1SkPKQRHGrMEe1iegWak84JdjWJ7tIGRFh6uREk3ek1Yrip -0uoB6IB5aHGZnQF+aHXuq5R3vYs+3FsaCY2KxKK4g6KsMBwECmzheKkZU1xZvhyX -qh1XCwSEYn8KWff9erwBtXUSDIUDH9927hywhqxkNqRTJTmUJFQCy5n94ZacxjLf -1oBAs8g+86Gq6uMLZyq69hez6UU1JUin66P/J6H+vUE2nCvy5u0WFZsgQZjB8Iq3 -fRnCXGGaZTCA2APNt1n/rlCniluEN2fF+8IGQiLBJLJgbxgCPd+o2ehTuuGs7o9C -SDoCfSsp6oDAhC0hQc/Ku5M7lvo5YxfQkC4zbvo7d3L2vc/YCkjdwby+o/63elqO -gkcHkWI+7k+pr+v7ptSAve5ASPvE7S0aJFO1/Y48iKoZdbdimpch6nYvJ5A8vcPn -ka4zsxdxpJa4w7z9lCNvouzSvE/lfPwqjZVNZeNv+ooQpMXiHE077qJAU4J5fhrC -v1vuTy1/7CYGhAh2o0vr7vWhhMy4C1iyUyvypJrlv0HnboS/ardsFBkQUWGv0inD -Dy3a3FIEs3IctnH04T2zRHhDfOlWH6Md/pG6p6nGLj44DF7vODD1Pwvvdh0M1eO2 -HA39md6hQ1cSwKFqMuWqtbNQj1G+jCoNGMoyWAi/tdX4YlEN3KOyFULIdcr+ky0j -lkP48N3CAqxxHgSHECU3yNbQMlbpGmPgM0cWZoH/Dhl3ZC7JbdOzL/Fz8vecu74H -zR34QVew6nUlJWocdU/98htVQo3OXhY4EIa7UPz3r3boRQXvHn1gN11QFP6iZ38X -Lc9/tX8ItLj7HbUmMdd90tLJPDZS8NVha6sxN2aggaJ8+DLqiTwL+9zZ+H9X3IvA -FZZBh+aZMZj2JGh7yLPhZxD1ly2zgR12LhJoeL0BlUOYc3P6dETNjgWGxrSiEChV -jOk2nQYXRJLhsiducVlO+OaQmy7BxEVTE5YbrRxvMYYQP89jUWTIe9bJgX4A2sez -3ufSNEa62uN/qQEsG8HPjxEwWyneRqF3PEuke2cPAOh+f6U5oONuTLS0Xw7vQ0qO -jUrHIk5JiZbhwyIrHvH6fRN9FceN6WMcwCRjJpeL1D7F78Hj1CzqATJyi6MHmTuM -SXPL8xUt0V2XZAZxaOe/9SaILEbi5dL6ZkumbOAsRZsi1FqG4tpQRY8Juq+t5w6c -vUyEla4YxkL/wf2eJWL3RO1M8ur3FuU0xJoHIIMO3aZu173nKCJuSrzNmyHbrVbG -qcKqrzfLK9Gql2S95qOuZgePpgxqu9/XStWYq5BiD1iVdIpJTwxmwHVP6cIQMwkx -pQG8/wL3KcqcbkzqIxsM6bYhfasOIuDjE/Gb7a2hUIWeeDuIAbgG+pnFuEM2zLYI -BGIr75s3EJkTuNEZ6FSeloHrwJNq3CZilgC89oSXS9w+cq54/YJPFL8EmbRQEzSI -vyqZ4cO6Qm/+1FQBHzDVVtOE5Hyby3hrQwjBdivWQaD1m0mV6jI6Zx3WmQI1Qtoo -n+/Xua8/81Kxg4zsv97JXXR054xvMAU1FHJVp7KqS9Qod9kh2Eg3jKAn7y1K3qWX -4L5ODLKgbDfboy6xfYqrA5niaFYcMeSsrvC/fFKpJIXdrJAf+xfqq8NMDLWYvSPM -dCsiIMG1YzqdopKsIHyOREEWogjmL2ZvSo5yKEavAvnpWZLtGWoF5hc+gxj4Nwi3 -sqWxS+yL9T2jFowUj++zMCjBxDDWDHNKR6HVbiuEbeSojMThM28Gv5Tg6GFyPTIz -FkgBLnKjXPgiU+IF6cQx278oPUlqQl56tX1/vArNde9oXsg0UetREBfSvDXseKV9 -8150jC5v/sr2JH40e/6BaeNLwN/vCAQ= -=aFU1 +hF4DAAAAAAAAAAASAQdAL34fn3LuLnPWUAMDDVZ410xpF/9TWc8tfeUMMgkjL3ow +KuTgErm/5gXbf13RjFpxSPiqAA9EO9vN8CsXDy6O46Bwm6WQcMQAJFNFkedej6Zv +0uoBcy1/1cpsirLecJyo/ADdPLDp5LS/AG/HToAFMt3N0x35ZGkbE6qrlR9YLVeS +dWzpTemyjmWOjqn90YTMWlMSpMsi1Sndw7AswpfgRTBn0wdaPKcwS8GLEDVByJCm +OPKDMiFIuR5I9W/YnKUjOEH9F3yZLV0MWmEYWDFNyvsp3H/389EeJe31Zu0M8WBz +Szw7vUx/LB/CXtqWWbCqaSKVAulMtNBxi6QRJKSlsSpZ80HYNQ4y+d86wUqCBKE4 +5nY8eEerxbG8bVp0O/r9tatjE37AXrzcZ9Wb0lz+u/mSX4BJIJ/I3mWKyvC61aKX +P2mZy3Rex2sgJZ64RMVXfuNVbWE82FkWY8P4Zb4l4HYQ5OwXzm7Ynm0CMaZZOe0Y +h3IfC+KkExCdbDR/es0VJFXaBJVK+UvpNiSAKRt/b3UESLHjzxteA/oNmUNL+zSV +y4aVPjj/lVUgAtKCAEXhVX8+TqMLXnrvPX4aW6JavV/MZvsWgBV1NlgTw1eRPzwg +8h+Hf9W5Z4/0GmosL350R2Id+orSAzWTz+jQEEHkig4CS1v9eyjOgpL7odvZywlk +PlhuFUocGX88msMnYTEm9d4XOEtsBnthrDUkuSyyrPGhf2Hvac/Py06ESXLbRqWF +bfH1zGPdQJiMADzABrCEpbmZdShyBNMQYZiufEHTsuaNKynDeYA2sw8kLb1RdnR5 +uMUKQqheHb/2IGUz0wfdvt0kwQieq14FotHKUqLLYPWbooRUqihb/JK9WlUSMOeO +Xl0ceoZjKe7ezkpLldlPRFRFKwFvvqzKqxoXEeymGSDByYSqbyMy5RmjryD3tY+e +E8511jcA+Jy8xORaK84Z+uiSxNvLn8k3G9DPeRNlwE1UDqJsAV58vIF1Ci9Q3Y/W +x018WdzDm521hCuISdGvwtsb8njAtUuFaj8cM/ieukMJ8WATxgyRlrboo6ha/q9C +/u2QHufYoe43SCP5EN7zTSra3zJ3HHlak9yyrVARD0HJlvWPdBCVpUteu1vrEutV +19W8IU7hmnvREdOuruKAH/TACRJGJF062yKXjxQcWpwPSnWBCcRYx2vU2d1gTh+R +6Oh9PVL8vAO6PZ1z4d99sGV9k2++LRMDzkIaTiFd2JJwQW2mxeL84EoBSrIpmEr0 ++YCW8J9fSqDHr16G0JRRlQv+M9SMObx3+6e2w7J8vZqahwSbSeQlrjquWxcH0HLr +hk3Z6CEJduD1TOxnbw2K9FjqPLhOKCQlFazJnNR+gxNjgYenlT6z8y6OPOm5cKDY +vNJ3rPsuddyBu1So+yJCz3NHUxpKD4adrZrX5rusZrmXr6rEE+PPZJMeHt6C/adg +Xz63EQgv1XJoI+I/yqskInT3wIdfYK89Vyu6NAfd8NrC6xbVJJfdoHxfcO61PaTg +m9XvFnQUYDVClhk9Ankou/PRxqHXh2CMVLHl0CBmy/YunIoccIRHys/HiIolHlSV +RC3jflR7heMCdBajknG4GnAeelloEHIStjICQ73eyCBqCNG+JAzegOUDQf90LBDW +MWYdMdFfOyP7IbRwT1qCtLgFtNfJlnLxIy3xjD7sKQ72APjq2oG3m5/lqiLGeNNd +sHdd8QEdLCvpVD0M1GL+ZMAxd89iSUJbF1xUY2lSaOWKdIozaJdY64Ea37Bs8vqU +qjNfHZfoXWFAFSEI4SkjjU+HDaTYpaYbYPmpJCxYQLdwTByFBmdDOpt1oOcaQN/Y +AS0z9poLE6Wy/R7hY136myx2LCERTa103DbUen/8XCxrChYZmYIDZoqq4iQnVEx9 +AfmLlnCWuCOlj6k= +=vXj9 -----END PGP MESSAGE-----