forked from fmtlib/fmt
Automatically update version in release script (#431)
This commit is contained in:
@ -8,7 +8,7 @@ Usage:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
import datetime, docopt, fileinput, json, os
|
import datetime, docopt, errno, fileinput, json, os
|
||||||
import re, requests, shutil, sys, tempfile
|
import re, requests, shutil, sys, tempfile
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from distutils.version import LooseVersion
|
from distutils.version import LooseVersion
|
||||||
@ -80,6 +80,7 @@ def create_build_env():
|
|||||||
import build
|
import build
|
||||||
|
|
||||||
env.build_dir = 'build'
|
env.build_dir = 'build'
|
||||||
|
env.versions = build.versions
|
||||||
|
|
||||||
# Virtualenv and repos are cached to speed up builds.
|
# Virtualenv and repos are cached to speed up builds.
|
||||||
build.create_build_env(os.path.join(env.build_dir, 'virtualenv'))
|
build.create_build_env(os.path.join(env.build_dir, 'virtualenv'))
|
||||||
@ -113,7 +114,7 @@ def update_site(env):
|
|||||||
doc_repo = Git(os.path.join(env.build_dir, 'fmtlib.github.io'))
|
doc_repo = Git(os.path.join(env.build_dir, 'fmtlib.github.io'))
|
||||||
doc_repo.update('git@github.com:fmtlib/fmtlib.github.io')
|
doc_repo.update('git@github.com:fmtlib/fmtlib.github.io')
|
||||||
|
|
||||||
for version in ['1.0.0', '1.1.0', '2.0.0', '3.0.0']:
|
for version in env.versions:
|
||||||
clean_checkout(env.fmt_repo, version)
|
clean_checkout(env.fmt_repo, version)
|
||||||
target_doc_dir = os.path.join(env.fmt_repo.dir, 'doc')
|
target_doc_dir = os.path.join(env.fmt_repo.dir, 'doc')
|
||||||
# Remove the old theme.
|
# Remove the old theme.
|
||||||
@ -140,6 +141,7 @@ def update_site(env):
|
|||||||
b.data = re.sub(pattern, r'doxygenfunction:: \1(int)', b.data)
|
b.data = re.sub(pattern, r'doxygenfunction:: \1(int)', b.data)
|
||||||
b.data = b.data.replace('std::FILE*', 'std::FILE *')
|
b.data = b.data.replace('std::FILE*', 'std::FILE *')
|
||||||
b.data = b.data.replace('unsigned int', 'unsigned')
|
b.data = b.data.replace('unsigned int', 'unsigned')
|
||||||
|
b.data = b.data.replace('operator""_', 'operator"" _')
|
||||||
# Fix a broken link in index.rst.
|
# Fix a broken link in index.rst.
|
||||||
index = os.path.join(target_doc_dir, 'index.rst')
|
index = os.path.join(target_doc_dir, 'index.rst')
|
||||||
with rewrite(index) as b:
|
with rewrite(index) as b:
|
||||||
@ -165,7 +167,11 @@ def update_site(env):
|
|||||||
os.symlink(target, link)
|
os.symlink(target, link)
|
||||||
# Copy docs to the website.
|
# Copy docs to the website.
|
||||||
version_doc_dir = os.path.join(doc_repo.dir, version)
|
version_doc_dir = os.path.join(doc_repo.dir, version)
|
||||||
shutil.rmtree(version_doc_dir)
|
try:
|
||||||
|
shutil.rmtree(version_doc_dir)
|
||||||
|
except OSError as e:
|
||||||
|
if e.errno != errno.ENOENT:
|
||||||
|
raise
|
||||||
shutil.move(html_dir, version_doc_dir)
|
shutil.move(html_dir, version_doc_dir)
|
||||||
|
|
||||||
|
|
||||||
@ -204,16 +210,24 @@ def release(args):
|
|||||||
line = '-' * title_len + '\n'
|
line = '-' * title_len + '\n'
|
||||||
title_len = 0
|
title_len = 0
|
||||||
sys.stdout.write(line)
|
sys.stdout.write(line)
|
||||||
# TODO: add new version to manage.py
|
|
||||||
|
# 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.checkout('-B', 'release')
|
||||||
fmt_repo.add(changelog, cmakelists)
|
fmt_repo.add(changelog, cmakelists, script)
|
||||||
fmt_repo.commit('-m', 'Update version')
|
fmt_repo.commit('-m', 'Update version')
|
||||||
|
|
||||||
# Build the docs and package.
|
# Build the docs and package.
|
||||||
run = Runner(fmt_repo.dir)
|
run = Runner(fmt_repo.dir)
|
||||||
run('cmake', '.')
|
run('cmake', '.')
|
||||||
run('make', 'doc', 'package_source')
|
run('make', 'doc', 'package_source')
|
||||||
|
|
||||||
update_site(env)
|
update_site(env)
|
||||||
|
|
||||||
# Create a release on GitHub.
|
# Create a release on GitHub.
|
||||||
|
Reference in New Issue
Block a user