hyfetch/accept-upstream.py

73 lines
2.5 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
import argparse
import os
2022-07-30 14:08:16 -06:00
import shlex
from subprocess import check_output
2022-07-30 14:08:16 -06:00
import pyperclip
import requests
from github import Github
upstream = 'dylanaraps/neofetch'
my_fork = 'hykilpikonna/hyfetch'
my_base = 'master'
# gh_token = os.environ['GH_TOKEN']
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Helper for accepting upstream pull requests')
parser.add_argument('pull', type=int, help='Pull request number')
args = parser.parse_args()
pr = args.pull
print(f'Accepting pull request {pr}...')
# Fetch original pr's information
info = requests.get(f'https://api.github.com/repos/{upstream}/pulls/{pr}').json()
# print(info)
head = info['head']['repo']['full_name']
head_br = info['head']['ref']
head_lbl = info['head']['label']
user = info['user']['login']
print()
print('Original Pull Request Info:')
print('> State:', info['state'])
print('> Title:', info['title'])
print('> User:', user)
print('> Created:', info['created_at'])
print('> Head:', head, head_br, head_lbl)
2022-07-30 14:14:25 -06:00
# Fetch commit information
commits = requests.get(f'https://api.github.com/repos/{upstream}/pulls/{pr}/commits').json()
author = commits[0]['commit']['author']
# Fetch head branch
print()
print('Fetching head branch...')
os.system(f'git fetch https://github.com/{head} {head_br}')
# Merge head branch
print()
print('Merging fetch_head...')
os.system(f'git merge FETCH_HEAD --no-ff --no-edit '
2022-07-30 13:57:43 -06:00
f'-m "[PR] {upstream}#{pr} from {user} - {info["title"]}" '
2022-07-30 14:14:25 -06:00
f'-m "Upstream PR: https://github.com/{upstream}/pull/{pr} \n'
f'Thanks to @{user}\n\n'
f'Co-authored-by: {author["name"]} <{author["email"]}>"')
2022-07-30 14:08:16 -06:00
# Get commit SHA
sha = check_output(shlex.split('git rev-parse --short HEAD')).decode().strip()
# Copy comment to clipboard
comment = f"""
Thank you for your contribution!
This PR is [merged into hyfetch](https://github.com/hykilpikonna/hyfetch/commit/{sha}) since this repo (dylanaraps/neofetch) seems no longer maintained.
[HyFetch](https://github.com/hykilpikonna/hyfetch) is a fork of neofetch with LGBTQ pride flags, but the repo also serves as an updated version of neofetch, addressing many pull requests that are not merged in the original repo.
"""
pyperclip.copy(comment.strip())
print()
print('Done!')
print('Comment response copied to clipboard.')