1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #!/usr/bin/env python3
- import argparse
- import os
- import shlex
- from subprocess import check_output
- 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)
- # 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...')
- title = info["title"].replace('"', '\\"')
- os.system(f'git merge FETCH_HEAD --no-ff --no-edit '
- f'-m "[PR] {upstream}#{pr} from {user} - {title}" '
- 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"]}>"')
- # Push
- print()
- print('Pushing...')
- os.system('git push')
- # 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.
- Read the ["Running Updated Original Neofetch" section](https://github.com/hykilpikonna/hyfetch#running-updated-original-neofetch) for more info!
- """
- pyperclip.copy(comment.strip())
- print()
- print('Done!')
- print('Comment response copied to clipboard.')
|