From b6b588dbbb51bd39687881fede85b31c85d662f2 Mon Sep 17 00:00:00 2001 From: "Antoine R. Dumont (@ardumont)" Date: Fri, 27 Jul 2018 11:13:13 +0200 Subject: [PATCH] lister.cli: Insert optional flag to permit post insert data That's needed for example for having the minimum necessary to make the debian lister run. --- swh/lister/cli.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/swh/lister/cli.py b/swh/lister/cli.py index 82a217a..ee7ff09 100644 --- a/swh/lister/cli.py +++ b/swh/lister/cli.py @@ -21,12 +21,16 @@ SUPPORTED_LISTERS = ['github', 'gitlab', 'bitbucket', 'debian'] help='create tables') @click.option('--drop-tables', is_flag=True, default=False, help='Drop tables') -def cli(db_url, lister, create_tables, drop_tables): +@click.option('--with-data', is_flag=True, default=False, + help='Insert minimum required data') +def cli(db_url, lister, create_tables, drop_tables, with_data): """Initialize db model according to lister. """ override_conf = {'lister_db_url': db_url} + insert_minimum_data = None + if lister == 'github': from .github.models import IndexingModelBase as ModelBase from .github.lister import GitHubLister @@ -49,6 +53,24 @@ def cli(db_url, lister, create_tables, drop_tables): ModelBase = DebianLister.MODEL _lister = DebianLister() + def insert_minimum_data(lister): + from swh.storage.schemata.distribution import Distribution, Area + d = Distribution( + name='Debian', + type='deb', + mirror_uri='http://deb.debian.org/debian/') + lister.db_session.add(d) + + areas = [] + for distribution_name in ['stretch']: + for area_name in ['main', 'contrib', 'non-free']: + areas.append(Area( + name='%s/%s' % (distribution_name, area_name), + distribution=d, + )) + lister.db_session.add_all(areas) + lister.db_session.commit() + else: raise ValueError('Only supported listers are %s' % SUPPORTED_LISTERS) @@ -58,6 +80,9 @@ def cli(db_url, lister, create_tables, drop_tables): if create_tables: ModelBase.metadata.create_all(_lister.db_engine) + if with_data and insert_minimum_data: + insert_minimum_data(_lister) + if __name__ == '__main__': cli()