def release(args): env = create_build_env() fmt_repo = env.fmt_repo branch = args.get('<branch>') if branch is None: branch = 'master' if not fmt_repo.update('-b', branch, fmt_repo_url): clean_checkout(fmt_repo, branch) # Convert changelog from RST to GitHub-flavored Markdown and get the # version. changelog = 'ChangeLog.rst' changelog_path = os.path.join(fmt_repo.dir, changelog) import rst2md changes, version = rst2md.convert(changelog_path) cmakelists = 'CMakeLists.txt' for line in fileinput.input(os.path.join(fmt_repo.dir, cmakelists), inplace=True): prefix = 'set(FMT_VERSION ' if line.startswith(prefix): line = prefix + version + ')\n' sys.stdout.write(line) # Update the version in the changelog. title_len = 0 for line in fileinput.input(changelog_path, inplace=True): if line.decode('utf-8').startswith(version + ' - TBD'): line = version + ' - ' + datetime.date.today().isoformat() title_len = len(line) line += '\n' elif title_len: line = '-' * title_len + '\n' title_len = 0 sys.stdout.write(line) # TODO: add new version to manage.py fmt_repo.checkout('-B', 'release') fmt_repo.add(changelog, cmakelists) fmt_repo.commit('-m', 'Update version') # Build the docs and package. run = Runner(fmt_repo.dir) run('cmake', '.') run('make', 'doc', 'package_source') update_site(env) # Create a release on GitHub. fmt_repo.push('origin', 'release') r = requests.post('https://api.github.com/repos/fmtlib/fmt/releases', params={'access_token': os.getenv('FMT_TOKEN')}, data=json.dumps({ 'tag_name': version, 'target_commitish': 'release', 'body': changes, 'draft': True })) if r.status_code != 201: raise Exception('Failed to create a release ' + str(r))
def release(args): env = create_build_env() fmt_repo = env.fmt_repo branch = args.get('<branch>') if branch is None: branch = 'master' if not fmt_repo.update('-b', branch, fmt_repo_url): clean_checkout(fmt_repo, branch) # Convert changelog from RST to GitHub-flavored Markdown and get the # version. changelog = 'ChangeLog.rst' changelog_path = os.path.join(fmt_repo.dir, changelog) import rst2md changes, version = rst2md.convert(changelog_path) cmakelists = 'CMakeLists.txt' for line in fileinput.input(os.path.join(fmt_repo.dir, cmakelists), inplace=True): prefix = 'set(FMT_VERSION ' if line.startswith(prefix): line = prefix + version + ')\n' sys.stdout.write(line) # Update the version in the changelog. title_len = 0 for line in fileinput.input(changelog_path, inplace=True): if line.decode('utf-8').startswith(version + ' - TBD'): line = version + ' - ' + datetime.date.today().isoformat() title_len = len(line) line += '\n' elif title_len: line = '-' * title_len + '\n' title_len = 0 sys.stdout.write(line) # TODO: add new version to manage.py fmt_repo.checkout('-B', 'release') fmt_repo.add(changelog, cmakelists) fmt_repo.commit('-m', 'Update version') # Build the docs and package. run = Runner(fmt_repo.dir) run('cmake', '.') run('make', 'doc', 'package_source') update_site(env) # Create a release on GitHub. fmt_repo.push('origin', 'release') r = requests.post('https://api.github.com/repos/fmtlib/fmt/releases', params={'access_token': os.getenv('FMT_TOKEN')}, data=json.dumps({'tag_name': version, 'target_commitish': 'release', 'body': changes, 'draft': True})) if r.status_code != 201: raise Exception('Failed to create a release ' + str(r))
def release(args): env = create_build_env() fmt_repo = env.fmt_repo branch = args.get('<branch>') if branch is None: branch = 'master' if not fmt_repo.update('-b', branch, fmt_repo_url): clean_checkout(fmt_repo, branch) # Convert changelog from RST to GitHub-flavored Markdown and get the # version. changelog = 'ChangeLog.rst' changelog_path = os.path.join(fmt_repo.dir, changelog) import rst2md changes, version = rst2md.convert(changelog_path) cmakelists = 'CMakeLists.txt' for line in fileinput.input(os.path.join(fmt_repo.dir, cmakelists), inplace=True): prefix = 'set(FMT_VERSION ' if line.startswith(prefix): line = prefix + version + ')\n' sys.stdout.write(line) # Update the version in the changelog. title_len = 0 for line in fileinput.input(changelog_path, inplace=True): if line.decode('utf-8').startswith(version + ' - TBD'): line = version + ' - ' + datetime.date.today().isoformat() title_len = len(line) line += '\n' elif title_len: line = '-' * title_len + '\n' title_len = 0 sys.stdout.write(line) # Add the version to the build script. script = os.path.join('doc', 'build.py') script_path = os.path.join(fmt_repo.dir, script) for line in fileinput.input(script_path, inplace=True): m = re.match(r'( *versions = )\[(.+)\]', line) if m: line = '{}[{}, \'{}\']\n'.format(m.group(1), m.group(2), version) sys.stdout.write(line) fmt_repo.checkout('-B', 'release') fmt_repo.add(changelog, cmakelists, script) fmt_repo.commit('-m', 'Update version') # Build the docs and package. run = Runner(fmt_repo.dir) run('cmake', '.') run('make', 'doc', 'package_source') update_site(env) # Create a release on GitHub. fmt_repo.push('origin', 'release') params = {'access_token': os.getenv('FMT_TOKEN')} r = requests.post('https://api.github.com/repos/fmtlib/fmt/releases', params=params, data=json.dumps({ 'tag_name': version, 'target_commitish': 'release', 'body': changes, 'draft': True })) if r.status_code != 201: raise Exception('Failed to create a release ' + str(r)) id = r.json()['id'] uploads_url = 'https://uploads.github.com/repos/fmtlib/fmt/releases' package = 'fmt-{}.zip'.format(version) r = requests.post('{}/{}/assets?name={}'.format(uploads_url, id, package), headers={'Content-Type': 'application/zip'}, params=params, data=open('build/fmt/' + package, 'rb')) if r.status_code != 201: raise Exception('Failed to upload an asset ' + str(r))
def release(args): env = create_build_env() fmt_repo = env.fmt_repo branch = args.get('<branch>') if branch is None: branch = 'master' if not fmt_repo.update('-b', branch, fmt_repo_url): clean_checkout(fmt_repo, branch) # Convert changelog from RST to GitHub-flavored Markdown and get the # version. changelog = 'ChangeLog.rst' changelog_path = os.path.join(fmt_repo.dir, changelog) import rst2md changes, version = rst2md.convert(changelog_path) cmakelists = 'CMakeLists.txt' for line in fileinput.input(os.path.join(fmt_repo.dir, cmakelists), inplace=True): prefix = 'set(FMT_VERSION ' if line.startswith(prefix): line = prefix + version + ')\n' sys.stdout.write(line) # Update the version in the changelog. title_len = 0 for line in fileinput.input(changelog_path, inplace=True): if line.decode('utf-8').startswith(version + ' - TBD'): line = version + ' - ' + datetime.date.today().isoformat() title_len = len(line) line += '\n' elif title_len: line = '-' * title_len + '\n' title_len = 0 sys.stdout.write(line) # Add the version to the build script. script = os.path.join('doc', 'build.py') script_path = os.path.join(fmt_repo.dir, script) for line in fileinput.input(script_path, inplace=True): m = re.match(r'( *versions = )\[(.+)\]', line) if m: line = '{}[{}, \'{}\']\n'.format(m.group(1), m.group(2), version) sys.stdout.write(line) fmt_repo.checkout('-B', 'release') fmt_repo.add(changelog, cmakelists, script) fmt_repo.commit('-m', 'Update version') # Build the docs and package. run = Runner(fmt_repo.dir) run('cmake', '.') run('make', 'doc', 'package_source') update_site(env) # Create a release on GitHub. fmt_repo.push('origin', 'release') params = {'access_token': os.getenv('FMT_TOKEN')} r = requests.post('https://api.github.com/repos/fmtlib/fmt/releases', params=params, data=json.dumps({'tag_name': version, 'target_commitish': 'release', 'body': changes, 'draft': True})) if r.status_code != 201: raise Exception('Failed to create a release ' + str(r)) id = r.json()['id'] uploads_url = 'https://uploads.github.com/repos/fmtlib/fmt/releases' package = 'fmt-{}.zip'.format(version) r = requests.post( '{}/{}/assets?name={}'.format(uploads_url, id, package), headers={'Content-Type': 'application/zip'}, params=params, data=open('build/fmt/' + package, 'rb')) if r.status_code != 201: raise Exception('Failed to upload an asset ' + str(r))