Source code for datumaro.cli.commands.require_project.modification.create
# Copyright (C) 2019-2021 Intel Corporation
#
# SPDX-License-Identifier: MIT
import argparse
import logging as log
import os
import os.path as osp
from datumaro.components.project import Project
from datumaro.util.os_util import rmtree
from ....util import MultilineFormatter
from ....util.errors import CliException
[docs]
def build_parser(parser_ctor=argparse.ArgumentParser):
parser = parser_ctor(
help="Create empty project",
description="""
Create an empty Datumaro project. A project is required for the most of
Datumaro functionality.|n
|n
Examples:|n
- Create a project in the current directory:|n
|s|s%(prog)s|n
|n
- Create a project in other directory:|n
|s|s%(prog)s -o path/I/like/
""",
formatter_class=MultilineFormatter,
)
parser.add_argument(
"-o",
"--output-dir",
default=".",
dest="dst_dir",
help="Save directory for the new project (default: current dir",
)
parser.add_argument(
"--overwrite", action="store_true", help="Overwrite existing files in the save directory"
)
parser.set_defaults(command=create_command)
return parser
[docs]
def get_sensitive_args():
return {
create_command: [
"dst_dir",
],
}
[docs]
def create_command(args):
project_dir = osp.abspath(args.dst_dir)
existing_project_dir = Project.find_project_dir(project_dir)
if existing_project_dir and os.listdir(existing_project_dir):
if args.overwrite:
rmtree(existing_project_dir)
else:
raise CliException(
"Directory '%s' already exists "
"(pass --overwrite to overwrite)" % existing_project_dir
)
log.info("Creating project at '%s'" % project_dir)
Project.init(project_dir)
log.info("Project has been created at '%s'" % project_dir)
return 0