tools/release-packages: Add update-main-repo subcommand.

The ability to update the zulip/requirements/* files in the main
zulip repo has now been made a part of its own subcommand.

To update the requirements to install the packages off of the
0.4.0 tag, run:

./release-packages ZULIP_DIR_PATH 0.4.0

To update the requirements to install the packages off of the
commit hash abcdefg, but the version to be 0.4.0, run:

./release-packages ZULIP_DIR_PATh 0.4.0 --hash abcdefg
This commit is contained in:
Eeshan Garg 2017-12-18 22:47:42 -03:30
parent 3c23dd6c66
commit 4dfa2d6f33

View file

@ -4,7 +4,6 @@ from __future__ import print_function
from contextlib import contextmanager from contextlib import contextmanager
import os import os
import argparse import argparse
import functools
import glob import glob
import shutil import shutil
import tempfile import tempfile
@ -102,9 +101,9 @@ def set_variable(fp, variable, value):
print(crayons.white(message, bold=True)) print(crayons.white(message, bold=True))
def update_requirements_in_zulip_repo(zulip_repo_dir, version, hash_or_tag): def update_requirements_in_zulip_repo(zulip_repo_dir, version, hash_or_tag):
common = os.path.join(zulip_repo_dir, 'requirements', 'common.txt') common = os.path.join(zulip_repo_dir, 'requirements', 'common.in')
prod_lock = os.path.join(zulip_repo_dir, 'requirements', 'prod_lock.txt') prod = os.path.join(zulip_repo_dir, 'requirements', 'prod.txt')
dev_lock = os.path.join(zulip_repo_dir, 'requirements', 'dev_lock.txt') dev = os.path.join(zulip_repo_dir, 'requirements', 'dev.txt')
def _edit_reqs_file(reqs, zulip_bots_line, zulip_line): def _edit_reqs_file(reqs, zulip_bots_line, zulip_line):
fh, temp_abs_path = tempfile.mkstemp() fh, temp_abs_path = tempfile.mkstemp()
@ -127,11 +126,8 @@ def update_requirements_in_zulip_repo(zulip_repo_dir, version, hash_or_tag):
zulip_line = url_zulip.format(tag=hash_or_tag, name='zulip', zulip_line = url_zulip.format(tag=hash_or_tag, name='zulip',
version=version) version=version)
map(functools.partial( _edit_reqs_file(prod, zulip_bots_line, zulip_line)
_edit_reqs_file, _edit_reqs_file(dev, zulip_bots_line, zulip_line)
zulip_bots_line=zulip_bots_line,
zulip_line=zulip_line,
), [prod_lock, dev_lock])
editable_zulip = '-e "{}"\n'.format(url_zulip.rstrip()) editable_zulip = '-e "{}"\n'.format(url_zulip.rstrip())
editable_zulip_bots = '-e "{}"\n'.format(url_zulip_bots.rstrip()) editable_zulip_bots = '-e "{}"\n'.format(url_zulip_bots.rstrip())
@ -194,10 +190,14 @@ The above command would accomplish the following (in order):
default=False, default=False,
help='Upload the packages to PyPA using twine.') help='Upload the packages to PyPA using twine.')
parser.add_argument('--update-zulip-main-repo', subparsers = parser.add_subparsers(dest='subcommand')
metavar='PATH_TO_ZULIP_DIR', parser_main_repo = subparsers.add_parser(
help='Update requirements/* in the main zulip repo and' 'update-main-repo',
' increment PROVISION_VERSION.') help='Update the zulip/requirements/* in the main zulip repo.'
)
parser_main_repo.add_argument('repo', metavar='PATH_TO_ZULIP_DIR')
parser_main_repo.add_argument('version', metavar='version number of the packages')
parser_main_repo.add_argument('--hash', metavar='COMMIT_HASH')
return parser.parse_args() return parser.parse_args()
@ -212,10 +212,10 @@ def main():
for package_dir in package_dirs: for package_dir in package_dirs:
cleanup(package_dir) cleanup(package_dir)
if options.build: if options.build:
package_dirs = map(os.path.dirname, setup_py_files) package_dirs = map(os.path.dirname, setup_py_files)
map(cleanup, package_dirs) for package_dir in package_dirs:
cleanup(package_dir)
zulip_init = os.path.join(REPO_DIR, 'zulip', 'zulip', '__init__.py') zulip_init = os.path.join(REPO_DIR, 'zulip', 'zulip', '__init__.py')
set_variable(zulip_init, '__version__', options.build) set_variable(zulip_init, '__version__', options.build)
@ -240,5 +240,13 @@ def main():
dist_dirs = glob.glob(os.path.join(REPO_DIR, '*', 'dist', '*')) dist_dirs = glob.glob(os.path.join(REPO_DIR, '*', 'dist', '*'))
twine_upload(dist_dirs) twine_upload(dist_dirs)
if options.subcommand == 'update-main-repo':
if options.hash:
update_requirements_in_zulip_repo(options.repo, options.version,
options.hash)
else:
update_requirements_in_zulip_repo(options.repo, options.version,
options.version)
if __name__ == '__main__': if __name__ == '__main__':
main() main()