Source code for datumaro.cli.commands.require_project.versioning.info
# Copyright (C) 2023 Intel Corporation
#
# SPDX-License-Identifier: MIT
import argparse
import os.path as osp
from datumaro.util.scope import scope_add, scoped
from ....util import MultilineFormatter
from ....util.project import load_project
[docs]
def build_parser(parser_ctor=argparse.ArgumentParser):
parser = parser_ctor(
help="Get project info",
description="""
Outputs project info - information about plugins,
sources, build tree, models and revisions.|n
|n
Examples:|n
- Print project info for the current working tree:|n |n
|s|s%(prog)s|n
|n
- Print project info for the previous revision:|n |n
|s|s%(prog)s HEAD~1
""",
formatter_class=MultilineFormatter,
)
parser.add_argument(
"revision", default="", nargs="?", help="Target revision (default: current working tree)"
)
parser.add_argument(
"-p",
"--project",
dest="project_dir",
help="Directory of the project to operate on (default: current dir)",
)
parser.set_defaults(command=info_command)
return parser
[docs]
def get_sensitive_args():
return {
info_command: ["project_dir", "revision"],
}
[docs]
@scoped
def info_command(args):
project = scope_add(load_project(args.project_dir))
rev = project.get_rev(args.revision)
env = rev.env
print("Project:")
print(" location:", project._root_dir)
print("Plugins:")
print(" extractors:", ", ".join(sorted(set(env.extractors) | set(env.importers))))
print(" exporters:", ", ".join(env.exporters))
print(" launchers:", ", ".join(env.launchers))
print("Models:")
for model_name, model in project.models.items():
print(" model '%s':" % model_name)
print(" type:", model.launcher)
print("Sources:")
for source_name, source in rev.sources.items():
print(" '%s':" % source_name)
print(" format:", source.format)
print(" url:", osp.abspath(source.url) if source.url else "")
print(
" location:",
osp.abspath(osp.join(project.source_data_dir(source_name), source.path)),
)
print(" options:", source.options)
print(" stages:")
for stage in rev.build_targets[source_name].stages:
print(" '%s':" % stage.name)
print(" type:", stage.type)
print(" hash:", stage.hash)
print(" cached:", project.is_obj_cached(stage.hash) if stage.hash else "n/a")
if stage.kind:
print(" kind:", stage.kind)
if stage.params:
print(" parameters:", stage.params)
return 0