diff options
| author | 2015-08-26 07:57:23 -0300 | |
|---|---|---|
| committer | 2015-08-26 07:57:23 -0300 | |
| commit | 70ceb871117ca811d63cb02671dc0fefc2700883 (patch) | |
| tree | 846133ea39797d2cd1101cff2ac0818167353490 /.pypt/ghrel | |
| parent | 8559119e2f45b7f6508282962c0430423bfab051 (diff) | |
| parent | 787b97a4cb24330b36f11297c6d3a7a473a907d0 (diff) | |
Merge tag 'upstream/7.6.4'
Upstream version 7.6.4
Diffstat (limited to '.pypt/ghrel')
| -rwxr-xr-x | .pypt/ghrel | 90 |
1 files changed, 55 insertions, 35 deletions
diff --git a/.pypt/ghrel b/.pypt/ghrel index 26463c5..c34dc22 100755 --- a/.pypt/ghrel +++ b/.pypt/ghrel @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- encoding: utf-8 -*- # Kw’s Release Tools/Python Project Template -# GitHub Releases Creator +# GitHub Release Creator # Copyright © 2013-2015, Chris Warrick. # All rights reserved. # @@ -33,58 +33,78 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# Arguments: -# FILE BASEDIR REPO TAG - """ Create GitHub releases out of changelogs. -Usage: .pypt/commitlog FILE BASEDIR REPO TAG, where +Usage: .pypt/commitlog FILE BASEDIR REPOSITORY TAG, where FILE is the path to the file to use, which can be a plain .md file or a CMFN file, BASEDIR is the project directory, - REPO is the full GitHub repository name (user/repo), + REPOSITORY is the full GitHub repository name (user/repo), TAG is the tag to write to. All paths should be absolute. """ +import argparse +import json import re import requests -import json +import sys from os.path import join as pjoin -from sys import argv -_script, FILE, BASEDIR, REPO, TAG = argv -with open(pjoin(BASEDIR, '.pypt', 'gh-token')) as fh: - TOKEN = fh.read().strip() +def main(): + """ghrel main function.""" + parser = argparse.ArgumentParser( + description="GitHub Release Creator " + "(part of Chris Warrick's Python Project Template)") + parser.add_argument('filename', metavar='FILE', nargs=1, + help='File to parse (Markdown or commitlog)') + parser.add_argument('basedir', metavar='BASEDIR', nargs=1, + help='Project directory (must contain .pypt/gh-token)') + parser.add_argument('repo', metavar='REPOSITORY', nargs=1, + help='GitHub repository (owner/repo)') + parser.add_argument('tag', metavar='TAG', nargs=1, + help='Tag to create release for (vX.Y.Z)') + args = parser.parse_args() + # nargs gets you lists, not strings + filename = args.filename[0] + basedir = args.basedir[0] + repo = args.repo[0] + tag = args.tag[0] -HEADERS = { - 'User-Agent': 'Kwpolska/python-project-template', - 'Authorization': 'token ' + TOKEN, -} + with open(pjoin(basedir, '.pypt', 'gh-token')) as fh: + token = fh.read().strip() -with open(FILE) as fh: - fdata = fh.read() - e = re.findall( - '#~ CHANGELOG MESSAGE START ~#\n(.*?)\n#~ CHANGELOG MESSAGE END ~#', - fdata, flags=re.S) + headers = { + 'User-Agent': 'Kwpolska/python-project-template', + 'Authorization': 'token ' + token, + } - if e: - # parse as a CMFN file, replace backticks (reST->Markdown) - message = e[0].replace('``', '`') - else: - # parse as a plain Markdown file - message = fdata + with open(filename) as fh: + fdata = fh.read() + e = re.findall( + '#~ CHANGELOG MESSAGE START ~#\n(.*?)\n' + '#~ CHANGELOG MESSAGE END ~#', + fdata, flags=re.S) + + if e: + # parse as a CMFN file, replace backticks (reST -> Markdown) + message = e[0].replace('``', '`') + else: + # parse as a plain Markdown file + message = fdata + r = requests.post( + 'https://api.github.com/repos/{0}/releases'.format(repo), + data=json.dumps({'tag_name': tag, 'body': message}), + headers=headers) -r = requests.post( - 'https://api.github.com/repos/{0}/releases'.format(REPO), - data=json.dumps({'tag_name': TAG, 'body': message}), - headers=HEADERS) + if r.status_code == 201: + print("GitHub Release created: {0}".format(r.json()['html_url'])) + else: + print("GitHub Release failed: {0}".format(r.text)) + return 1 -if r.status_code == 201: - print("GitHub Release created: {0}".format(r.json()['url'])) -else: - print("GitHub Release failed: {0}".format(r.text)) - exit(1) +if __name__ == '__main__': + sys.exit(main()) |
