summaryrefslogtreecommitdiffstats
path: root/.pypt
diff options
context:
space:
mode:
Diffstat (limited to '.pypt')
-rwxr-xr-x.pypt/ghrel90
1 files changed, 90 insertions, 0 deletions
diff --git a/.pypt/ghrel b/.pypt/ghrel
new file mode 100755
index 0000000..26463c5
--- /dev/null
+++ b/.pypt/ghrel
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+# Kw’s Release Tools/Python Project Template
+# GitHub Releases Creator
+# Copyright © 2013-2015, Chris Warrick.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the author of this software nor the names of
+# contributors to this software may be used to endorse or promote
+# products derived from this software without specific prior written
+# consent.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (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
+ 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),
+ TAG is the tag to write to.
+ All paths should be absolute.
+"""
+
+import re
+import requests
+import json
+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()
+
+HEADERS = {
+ 'User-Agent': 'Kwpolska/python-project-template',
+ 'Authorization': 'token ' + TOKEN,
+}
+
+with open(FILE) 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)
+
+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)