diff options
Diffstat (limited to 'gr-utils/modtool/cli')
-rw-r--r-- | gr-utils/modtool/cli/CMakeLists.txt | 1 | ||||
-rw-r--r-- | gr-utils/modtool/cli/base.py | 4 | ||||
-rw-r--r-- | gr-utils/modtool/cli/bind.py | 54 |
3 files changed, 57 insertions, 2 deletions
diff --git a/gr-utils/modtool/cli/CMakeLists.txt b/gr-utils/modtool/cli/CMakeLists.txt index f00adfb4d8..e83c85f07d 100644 --- a/gr-utils/modtool/cli/CMakeLists.txt +++ b/gr-utils/modtool/cli/CMakeLists.txt @@ -11,6 +11,7 @@ GR_PYTHON_INSTALL(FILES __init__.py add.py base.py + bind.py disable.py info.py makeyaml.py diff --git a/gr-utils/modtool/cli/base.py b/gr-utils/modtool/cli/base.py index 3cd0836ad0..2d7de71d53 100644 --- a/gr-utils/modtool/cli/base.py +++ b/gr-utils/modtool/cli/base.py @@ -118,8 +118,8 @@ def common_params(func): help="Base directory of the module. Defaults to the cwd.") @click.option('--skip-lib', is_flag=True, help="Don't do anything in the lib/ subdirectory.") - @click.option('--skip-swig', is_flag=True, - help="Don't do anything in the swig/ subdirectory.") + @click.option('--skip-pybind', is_flag=True, + help="Don't do anything in the python/bindings/ subdirectory.") @click.option('--skip-python', is_flag=True, help="Don't do anything in the python/ subdirectory.") @click.option('--skip-grc', is_flag=True, diff --git a/gr-utils/modtool/cli/bind.py b/gr-utils/modtool/cli/bind.py new file mode 100644 index 0000000000..48d01d0491 --- /dev/null +++ b/gr-utils/modtool/cli/bind.py @@ -0,0 +1,54 @@ +# +# Copyright 2018 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# +""" Create Python bindings for GR block """ + +from __future__ import print_function +from __future__ import absolute_import +from __future__ import unicode_literals + +import os +import click + +try: + from gnuradio.blocktool import BlockHeaderParser + from gnuradio.blocktool.core.base import BlockToolException +except ImportError: + have_blocktool = False +else: + have_blocktool = True + +from ..core import ModToolGenBindings, get_block_candidates +from ..tools import SequenceCompleter +from .base import common_params, block_name, run, cli_input + + +@click.command('bind', short_help=ModToolGenBindings.description) +@click.option('-o', '--output', is_flag=True, + help='If given, a file with desired output format will be generated') +@common_params +@block_name +def cli(**kwargs): + """ + \b + Create Python bindings for GR C++ block + """ + kwargs['cli'] = True + self = ModToolGenBindings(**kwargs) + click.secho("GNU Radio module name identified: " + self.info['modname'], fg='green') + get_pattern(self) + run(self) + +def get_pattern(self): + """ Get the regex pattern for block(s) to be parsed """ + if self.info['pattern'] is None: + block_candidates = get_block_candidates() + with SequenceCompleter(block_candidates): + self.info['pattern'] = cli_input('Which blocks do you want to parse? (Regex): ') + if not self.info['pattern'] or self.info['pattern'].isspace(): + self.info['pattern'] = '.' |