diff --git a/setup.py b/setup.py index 2efb051..ea4133f 100755 --- a/setup.py +++ b/setup.py @@ -1,69 +1,71 @@ #!/usr/bin/env python3 # Copyright (C) 2015-2019 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information from setuptools import setup, find_packages from os import path from io import open here = path.abspath(path.dirname(__file__)) # Get the long description from the README file with open(path.join(here, 'README.md'), encoding='utf-8') as f: long_description = f.read() def parse_requirements(name=None): if name: reqf = 'requirements-%s.txt' % name else: reqf = 'requirements.txt' requirements = [] if not path.exists(reqf): return requirements with open(reqf) as f: for line in f.readlines(): line = line.strip() if not line or line.startswith('#'): continue requirements.append(line) return requirements setup( name='swh.graph', description='Software Heritage graph service', long_description=long_description, long_description_content_type='text/markdown', author='Software Heritage developers', author_email='swh-devel@inria.fr', url='https://forge.softwareheritage.org/diffusion/DGRPH', packages=find_packages(), install_requires=parse_requirements() + parse_requirements('swh'), tests_require=parse_requirements('test'), setup_requires=['vcversioner'], extras_require={'testing': parse_requirements('test')}, vcversioner={}, include_package_data=True, entry_points=''' [console_scripts] swh-graph=swh.graph.cli:main + [swh.cli.subcommands] + graph=swh.graph.cli:cli ''', classifiers=[ "Programming Language :: Python :: 3", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", "Development Status :: 3 - Alpha", ], project_urls={ 'Bug Reports': 'https://forge.softwareheritage.org/maniphest', 'Funding': 'https://www.softwareheritage.org/donate', 'Source': 'https://forge.softwareheritage.org/source/swh-graph', }, ) diff --git a/swh/graph/cli.py b/swh/graph/cli.py index 89efd3f..3470e3a 100644 --- a/swh/graph/cli.py +++ b/swh/graph/cli.py @@ -1,29 +1,35 @@ import click -import client +from swh.core.cli import CONTEXT_SETTINGS, AliasedGroup +from swh.graph import client -CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help']) +@click.group(name='graph', context_settings=CONTEXT_SETTINGS, + cls=AliasedGroup) +@click.pass_context +def cli(ctx): + """Software Heritage graph tools.""" + ctx.ensure_object(dict) -@click.command(context_settings=CONTEXT_SETTINGS) -@click.option('--host', default='0.0.0.0', help="Host where runs the server") -@click.option('--port', default='5009', help="Binding port of the server") +@cli.command('api-client') +@click.option('--host', default='localhost', help='Graph server host') +@click.option('--port', default='5009', help='Graph server port') @click.pass_context -def cli(ctx, host, port): - """Software Heritage Graph API +def api_client(ctx, host, port): + """Client for the Software Heritage Graph REST service """ - url = 'http://' + host + ':' + port + url = 'http://{}:{}'.format(host, port) app = client.RemoteGraphClient(url) # TODO: run web app print(app.stats()) def main(): return cli(auto_envvar_prefix='SWH_GRAPH') if __name__ == '__main__': main()