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:
parent
3c23dd6c66
commit
4dfa2d6f33
|
@ -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()
|
||||||
|
|
Loading…
Reference in a new issue