Source code for datumaro.cli.commands.require_project.modification.remove
# Copyright (C) 2019-2021 Intel Corporation
#
# SPDX-License-Identifier: MIT
import argparse
import logging as log
from datumaro.util.scope import scope_add, scoped
from ....util.errors import CliException
from ....util.project import load_project
__all__ = [
"build_parser",
"get_sensitive_args",
]
[docs]
def build_parser(parser_ctor=argparse.ArgumentParser):
parser = parser_ctor(
help="Remove source from project", description="Remove a source from a project"
)
parser.add_argument("names", nargs="+", help="Names of the sources to be removed")
parser.add_argument(
"--force", action="store_true", help="Do not fail and stop on errors during removal"
)
parser.add_argument(
"--keep-data",
action="store_true",
help="Do not remove source data from the working directory, remove "
"only project metainfo.",
)
parser.add_argument(
"-p",
"--project",
dest="project_dir",
help="Directory of the project to operate on (default: current dir)",
)
parser.set_defaults(command=remove_command)
return parser
[docs]
def get_sensitive_args():
return {
remove_command: [
"project_dir",
"names",
],
}
[docs]
@scoped
def remove_command(args):
project = scope_add(load_project(args.project_dir))
if not args.names:
raise CliException("Expected source name")
for name in args.names:
project.remove_source(name, force=args.force, keep_data=args.keep_data)
project.working_tree.save()
log.info("Sources '%s' have been removed from the project" % ", ".join(args.names))
return 0