summaryrefslogtreecommitdiff
path: root/gr-utils/python/blocktool/cli.py
diff options
context:
space:
mode:
Diffstat (limited to 'gr-utils/python/blocktool/cli.py')
-rw-r--r--gr-utils/python/blocktool/cli.py130
1 files changed, 0 insertions, 130 deletions
diff --git a/gr-utils/python/blocktool/cli.py b/gr-utils/python/blocktool/cli.py
deleted file mode 100644
index b5bf6390f1..0000000000
--- a/gr-utils/python/blocktool/cli.py
+++ /dev/null
@@ -1,130 +0,0 @@
-#
-# Copyright 2019 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-#
-#
-""" Module to generate parsed header output data """
-
-from __future__ import print_function
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
-import os
-import sys
-import json
-import logging
-
-import click
-from click import ClickException
-
-from gnuradio.modtool.core import yaml_generator
-
-from .core.parseheader import BlockHeaderParser
-
-LOGGER = logging.getLogger(__name__)
-
-
-class BlockToolException(ClickException):
- """ Exception class for enhanced CLI interface """
-
- def show(self, file=None):
- """ displays the colored message """
- click.secho('BlockToolException: {}'.format(
- self.format_message()), fg='red')
-
-
-def run_blocktool(module):
- """Call the run function of the core modules."""
- try:
- module.run_blocktool()
- except BlockToolException as err:
- click.echo(err, file=sys.stderr)
- exit(1)
-
-
-@click.command('parseheader',
- short_help='Generate the parsed output for the header file or directory in a specified format')
-@click.argument('file-path', nargs=1)
-@click.option('--yaml', is_flag=True,
- help='If given, a YAML response will be printed, else default json will be printed')
-@click.option('-c', '--blocktool-comments', is_flag=True,
- help='blocktool helper comments will be added in the header file')
-@click.option('-o', '--output', is_flag=True,
- help='If given, a file with desired output format will be generated')
-@click.option('-I', '--include_paths', default=None,
- help='Comma separated list of include paths for header files')
-def cli(**kwargs):
- """
- Block header parsing tool.
- \b
- A tool that can be used to automatically parse the headers in GNU Radio project
- or the OOT modules
- """
- kwargs['modtool'] = False
- if os.path.isfile(kwargs['file_path']):
- parser = BlockHeaderParser(**kwargs)
- run_blocktool(parser)
- if kwargs['yaml']:
- parser.yaml = True
- yaml_generator(parser, **kwargs)
- else:
- parser.json_confirm = True
- json_generator(parser, **kwargs)
- elif os.path.isdir(kwargs['file_path']):
- parse_directory(**kwargs)
- else:
- raise BlockToolException('Invalid file or directory path.')
-
-
-def json_generator(parser, **kwargs):
- """
- Generate JSON file for the block header
- """
- header = parser.filename.split('.')[0]
- block = parser.modname.split('-')[-1]
- if kwargs['output']:
- json_file = os.path.join('.', block+'_'+header + '.json')
- with open(json_file, 'w') as _file:
- json.dump(parser.parsed_data, _file, indent=4)
- else:
- print(json.dumps(parser.parsed_data, indent=4))
-
-
-def parse_directory(**kwargs):
- """
- Get parsed json and yaml output for complete header directory
- """
- kwargs['output'] = True
- dir_path = kwargs['file_path']
- dir_path = os.path.abspath(dir_path)
- list_header = []
- dir_name = os.path.basename(dir_path)
- for _header in os.listdir(dir_path):
- if _header.endswith('.h') and os.path.isfile(os.path.join(dir_path, _header)):
- list_header.append(os.path.join(dir_path, _header))
- list_header = sorted(list_header)
- if list_header:
- for header_path in list_header:
- kwargs['file_path'] = header_path
- header = os.path.basename(header_path)
- try:
- parse_dir = BlockHeaderParser(**kwargs)
- parse_dir.yaml = True
- parse_dir.json = True
- run_blocktool(parse_dir)
- yaml_generator(parse_dir, **kwargs)
- if not kwargs['modtool']:
- json_generator(parse_dir, **kwargs)
- except:
- logging.basicConfig(level=logging.DEBUG,
- filename=os.path.join('.', dir_name+'_log.out'))
- logging.exception(
- 'Log for Exception raised for the header: {}\n'.format(header))
- click.secho('Parsing unsuccessful: {}'.format(
- header), fg='yellow')
- else:
- raise BlockToolException(
- 'Invalid directory! No header found to be parsed')