| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- 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)
|