diff --git a/zulip_bots/generate_manifest.py b/zulip_bots/generate_manifest.py index 0c7950b..0f09ef6 100755 --- a/zulip_bots/generate_manifest.py +++ b/zulip_bots/generate_manifest.py @@ -1,10 +1,12 @@ #!/usr/bin/env python +import argparse import os import glob CURRENT_DIR = os.path.abspath(os.path.dirname(__file__)) BOTS_DIR = os.path.normpath(os.path.join(CURRENT_DIR, 'zulip_bots', 'bots')) +MANIFEST_PATH = os.path.join(CURRENT_DIR, 'MANIFEST.in') def get_test_fixtures(): # type: () -> List[str] @@ -42,26 +44,55 @@ def get_assets(): ) return assets_files +def generate_and_write(filepaths, file_obj): + # type: () -> None + template = 'include {line}\n' + lines = map(lambda line: template.format(line=line), filepaths) + + file_obj.writelines(lines) + file_obj.write('\n') + +def generate_dev_manifest(): + # type: () -> None + with open(MANIFEST_PATH, 'w') as fp: + generate_and_write(get_test_fixtures(), fp) + generate_and_write(get_logos(), fp) + generate_and_write(get_docs(), fp) + generate_and_write(get_assets(), fp) + +def generate_release_manifest(): + # type: () -> None + with open(MANIFEST_PATH, 'w') as fp: + generate_and_write(get_docs(), fp) + generate_and_write(get_assets(), fp) + +def parse_args(): + usage = """ +To generate a MANIFEST.in for a PyPA release, run: + +./generate_manifest.py --release + +To generate a MANIFEST.in for development, run without arguments: + +./generate_manifest.py +""" + parser = argparse.ArgumentParser(usage=usage) + + parser.add_argument('--release', '-r', + action='store_true', + default=False, + help='Generate MANIFEST.in for a PyPA release.') + + return parser.parse_args() + def main(): # type: () -> None - manifest_path = os.path.join(CURRENT_DIR, 'MANIFEST.in') - with open(manifest_path, 'w') as fp: - template = 'include {line}\n' - fixtures = map(lambda line: template.format(line=line), - get_test_fixtures()) - logos = map(lambda line: template.format(line=line), - get_logos()) - docs = map(lambda line: template.format(line=line), - get_docs()) + options = parse_args() + if options.release: + generate_release_manifest() + else: + generate_dev_manifest() - fp.writelines(fixtures) - fp.write('\n') - - fp.writelines(logos) - fp.write('\n') - - fp.writelines(docs) - fp.write('\n') if __name__ == '__main__': main() diff --git a/zulip_bots/setup.py b/zulip_bots/setup.py index 3a53739..f0d7e0b 100755 --- a/zulip_bots/setup.py +++ b/zulip_bots/setup.py @@ -7,7 +7,7 @@ import sys # Before anything, generate MANIFEST.in import generate_manifest -generate_manifest.main() +generate_manifest.generate_dev_manifest() # We should be installable with either setuptools or distutils. package_info = dict(