29 lines
1.2 KiB
Python
29 lines
1.2 KiB
Python
from os.path import basename, dirname, join
|
|
|
|
from ..cli import (resolve_circular_references, # type: ignore
|
|
show_unresolved_dependencies)
|
|
from ..config import FileConfig # type: ignore
|
|
from ..language import MakeDataConfig # type: ignore
|
|
from ..project_graph import ProjectGraph # type: ignore
|
|
from ..shell import failure, pretty_debug, success # type: ignore
|
|
|
|
|
|
def pretty_print_order(graph: ProjectGraph):
|
|
return ' -> '.join([basename(edge.project.directory) \
|
|
if isinstance(edge.project, FileConfig) \
|
|
else str(edge) for edge in graph.traverse_dependencies()])
|
|
|
|
master_project_path = join(dirname(__file__), "1-master-project")
|
|
master_project = MakeDataConfig.of(master_project_path)
|
|
if master_project:
|
|
graph = ProjectGraph(master_project)
|
|
graph.collect_dependencies(master_project)
|
|
success(f"Got {len(graph.values())} nodes of {basename(master_project_path)!r} dependencies")
|
|
unresolved_artifacts = graph.resolve_dependencies()
|
|
show_unresolved_dependencies(unresolved_artifacts)
|
|
pretty_debug(f"Currently order (excluding affected projects): {pretty_print_order(graph)}")
|
|
resolve_circular_references(graph)
|
|
success(f"Order: {pretty_print_order(graph)}")
|
|
else:
|
|
failure("No such project.")
|