# -*- coding: utf-8 -*- from argparse import Namespace, ArgumentParser from ..Cmd import Cmd class CmdCheck(Cmd): # export def __init__(self) -> None: super().__init__('check', help='Check for circular dependencies between given modules') def add_arguments(self, parser: ArgumentParser) -> None: super().add_arguments(parser) parser.add_argument('module', nargs='*', help='Modules') parser.add_argument('-f', '--flavour', nargs='?', default = 'build') def _run(self, args: Namespace) -> None: graph = {} path = [] self.app.read_dep_graph(args.module, args.flavour, graph) unvisited = list(graph.keys()) temp = set() while len(unvisited) != 0: m = unvisited[0] self.app.debug('Checking circular dependency of', m) last = self.app.check_circular_deps(m, args.flavour, self.app.flip_graph(graph), unvisited, temp, path) if last is not None: self.app.debug('Found circular dependency below', m, ', last is', last) print('Found circular dependency in flavour', args.flavour, ':', ' -> '.join(path)) exit(1) print('No circular dependency found for flavour', args.flavour, ' in modules:', ' '.join(args.module)) exit(0)