diff options
author | japm48 <japm48@users.noreply.github.com> | 2020-03-26 16:01:00 +0100 |
---|---|---|
committer | Michael Dickens <michael.dickens@ettus.com> | 2020-04-10 14:57:01 -0400 |
commit | 4c4a85f2ebc43c9b7b3d5fdb8ad8387eae735f5f (patch) | |
tree | 10b5aa2671aafb9e393af7538177d2e48f60780d /gr-utils/modtool/cli/rename.py | |
parent | 78955a24c6c24f92f7b22ab9223e8e0b60b1dc4b (diff) |
gr-utils: restructure {mod,block}tool folders
Move modtool and blocktool outside of the python folder,
as per issue #2462.
Diffstat (limited to 'gr-utils/modtool/cli/rename.py')
-rw-r--r-- | gr-utils/modtool/cli/rename.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/gr-utils/modtool/cli/rename.py b/gr-utils/modtool/cli/rename.py new file mode 100644 index 0000000000..86777fa3fb --- /dev/null +++ b/gr-utils/modtool/cli/rename.py @@ -0,0 +1,71 @@ +# +# Copyright 2018 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# +""" Module to rename blocks """ + +from __future__ import print_function +from __future__ import absolute_import +from __future__ import unicode_literals + +import re + +import click + +from ..core import get_block_candidates, ModToolRename +from ..tools import SequenceCompleter +from .base import common_params, block_name, run, cli_input, ModToolException + + +@click.command('rename', short_help=ModToolRename.description) +@common_params +@block_name +@click.argument('new-name', metavar="NEW-BLOCK-NAME", nargs=1, required=False) +def cli(**kwargs): + """ + \b + Rename a block inside a module. + + The argument NEW-BLOCK-NAME is the new name of the block. + """ + kwargs['cli'] = True + self = ModToolRename(**kwargs) + click.secho("GNU Radio module name identified: " + self.info['modname'], fg='green') + # first make sure the old block name is provided + get_oldname(self) + click.secho("Block/code to rename identifier: " + self.info['oldname'], fg='green') + self.info['fulloldname'] = self.info['modname'] + '_' + self.info['oldname'] + # now get the new block name + get_newname(self) + click.secho("Block/code identifier: " + self.info['newname'], fg='green') + self.info['fullnewname'] = self.info['modname'] + '_' + self.info['newname'] + run(self) + +def get_oldname(self): + """ Get the old block name to be replaced """ + block_candidates = get_block_candidates() + if self.info['oldname'] is None: + with SequenceCompleter(block_candidates): + while not self.info['oldname'] or self.info['oldname'].isspace(): + self.info['oldname'] = cli_input("Enter name of block/code to rename "+ + "(without module name prefix): ") + if self.info['oldname'] not in block_candidates: + choices = [x for x in block_candidates if self.info['oldname'] in x] + if len(choices) > 0: + click.secho("Suggested alternatives: "+str(choices), fg='yellow') + raise ModToolException("Blockname for renaming does not exists!") + if not re.match('[a-zA-Z0-9_]+', self.info['oldname']): + raise ModToolException('Invalid block name.') + +def get_newname(self): + """ Get the new block name """ + if self.info['newname'] is None: + while not self.info['newname'] or self.info['newname'].isspace(): + self.info['newname'] = cli_input("Enter name of block/code "+ + "(without module name prefix): ") + if not re.match('[a-zA-Z0-9_]+', self.info['newname']): + raise ModToolException('Invalid block name.') |