95 lines
3.3 KiB
Python
95 lines
3.3 KiB
Python
|
def cmd(cmd):
|
||
|
import subprocess
|
||
|
import shlex
|
||
|
return subprocess.check_output(shlex.split(cmd)).rstrip('\r\n')
|
||
|
|
||
|
def get_tag_info(tag):
|
||
|
rev = cmd('git rev-parse {0}'.format(latest_tag))
|
||
|
anno = cmd('git cat-file -p {0}'.format(rev))
|
||
|
tag_info = []
|
||
|
for i, v in enumerate(anno.splitlines()):
|
||
|
if i <= 4:
|
||
|
continue
|
||
|
tag_info.append(v.lstrip())
|
||
|
|
||
|
return tag_info
|
||
|
|
||
|
def gen_html(github_user, latest_tag):
|
||
|
|
||
|
url = 'https://github.com/{0}/obs-studio/commit/%H'.format(github_user)
|
||
|
|
||
|
with open('readme.html', 'w') as f:
|
||
|
f.write("<html><body>")
|
||
|
log_cmd = """git log {0}...HEAD --pretty=format:'<li>• <a href="{1}">(view)</a> %s</li>'"""
|
||
|
log_res = cmd(log_cmd.format(latest_tag, url))
|
||
|
if len(log_res.splitlines()):
|
||
|
f.write('<p>Changes since {0}: (Newest to oldest)</p>'.format(latest_tag))
|
||
|
f.write(log_res)
|
||
|
|
||
|
ul = False
|
||
|
f.write('<p>')
|
||
|
import re
|
||
|
|
||
|
for l in get_tag_info(latest_tag):
|
||
|
if not len(l):
|
||
|
continue
|
||
|
if l.startswith('*'):
|
||
|
ul = True
|
||
|
if not ul:
|
||
|
f.write('<ul>')
|
||
|
f.write('<li>• {0}</li>'.format(re.sub(r'^(\s*)?[*](\s*)?', '', l)))
|
||
|
else:
|
||
|
if ul:
|
||
|
f.write('</ul><p/>')
|
||
|
ul = False
|
||
|
f.write('<p>{0}</p>'.format(l))
|
||
|
if ul:
|
||
|
f.write('</ul>')
|
||
|
f.write('</p></body></html>')
|
||
|
|
||
|
cmd('textutil -convert rtf readme.html -output readme.rtf')
|
||
|
cmd("""sed -i '' 's/Times-Roman/Verdana/g' readme.rtf""")
|
||
|
|
||
|
def save_manifest(latest_tag, user, jenkins_build, branch, stable):
|
||
|
log = cmd('git log --pretty=oneline {0}...HEAD'.format(latest_tag))
|
||
|
manifest = {}
|
||
|
manifest['commits'] = []
|
||
|
for v in log.splitlines():
|
||
|
manifest['commits'].append(v)
|
||
|
manifest['tag'] = {
|
||
|
'name': latest_tag,
|
||
|
'description': get_tag_info(latest_tag)
|
||
|
}
|
||
|
|
||
|
manifest['version'] = cmd('git rev-list HEAD --count')
|
||
|
manifest['sha1'] = cmd('git rev-parse HEAD')
|
||
|
manifest['jenkins_build'] = jenkins_build
|
||
|
|
||
|
manifest['user'] = user
|
||
|
manifest['branch'] = branch
|
||
|
manifest['stable'] = stable
|
||
|
|
||
|
import cPickle
|
||
|
with open('manifest', 'w') as f:
|
||
|
cPickle.dump(manifest, f)
|
||
|
|
||
|
def prepare_pkg(project, package_id):
|
||
|
cmd('packagesutil --file "{0}" set package-1 identifier {1}'.format(project, package_id))
|
||
|
cmd('packagesutil --file "{0}" set package-1 version {1}'.format(project, '1.0'))
|
||
|
|
||
|
|
||
|
import argparse
|
||
|
parser = argparse.ArgumentParser(description='obs-studio package util')
|
||
|
parser.add_argument('-u', '--user', dest='user', default='jp9000')
|
||
|
parser.add_argument('-p', '--package-id', dest='package_id', default='org.obsproject.pkg.obs-studio')
|
||
|
parser.add_argument('-f', '--project-file', dest='project', default='OBS.pkgproj')
|
||
|
parser.add_argument('-j', '--jenkins-build', dest='jenkins_build', default='0')
|
||
|
parser.add_argument('-b', '--branch', dest='branch', default='master')
|
||
|
parser.add_argument('-s', '--stable', dest='stable', required=False, action='store_true', default=False)
|
||
|
args = parser.parse_args()
|
||
|
|
||
|
latest_tag = cmd('git describe --tags --abbrev=0')
|
||
|
gen_html(args.user, latest_tag)
|
||
|
prepare_pkg(args.project, args.package_id)
|
||
|
save_manifest(latest_tag, args.user, args.jenkins_build, args.branch, args.stable)
|