"""
The `records flag` command can be used to add flags to a specific file or the registry itself, and to define flag groups.
Usage
-----
>>> records flag [-f <flags>] [-g <groupname> : <grouplabels>] <filename>
where ``<filename>`` is the path to the file to comment. If left blank the flag is added to the registry itself.
``-f <flags>``, adds any number of flags. These can include defined flag group labels.
``-g <groupname> : <grouplabels>``, will define a flag group in the registry.
``-f`` and ``-g`` can be provided at the same time.
"""
[docs]def setup( parent ):
"""
Set up the CLI
"""
descr = "Add flags to files or the registry itself (can also be done with comment), and define flag groups (this command only)."
parser = parent.add_parser( "flag", description = descr, help = descr )
parser.add_argument( "filename", nargs = "*", help = "The file to comment. If left blank the comments are applied to the registry itself", default = None )
parser.add_argument( "-f", "--flags", help = "Add flags.", nargs="+", default = None )
parser.add_argument( "-g", "--group", help = "Add flag groups to the registry. Flag groups can be specified via '<name> : <flag1> <flag2>...' syntax. Note, this option specifies a single group. It can be supplied multiple times to specify multiple groups in one go.", nargs="+", action = "append", default = None )
parser.set_defaults( func = flag )
[docs]def flag( args ):
"""
The core function to add comments.
"""
import filerecords.api as api
import filerecords.cli.auxiliary as aux
# import filerecords.api.utils as utils
# logger = utils.log()
reg = api.Registry( "." )
# add any new groups to the registry.
if args.group:
aux._register_groups( reg, args.group )
if args.flags:
if not args.filename:
if args.flags:
reg.add_flags( args.flags )
reg.save()
elif isinstance( args.filename, list ):
for filename in args.filename:
args.filename = filename
_flag_file( args, reg )
else:
_flag_file( args, reg )
def _flag_file(args, reg):
"""
The core function to add flags to file records.
"""
record = reg.get_record( args.filename )
if record is None:
reg.add( args.filename, flags = args.flags )
else:
reg.update( args.filename, flags = args.flags )