summaryrefslogtreecommitdiff
path: root/gr-utils/modtool/cli/bind.py
diff options
context:
space:
mode:
Diffstat (limited to 'gr-utils/modtool/cli/bind.py')
-rw-r--r--gr-utils/modtool/cli/bind.py54
1 files changed, 54 insertions, 0 deletions
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'] = '.'