def GenerateImages(data, options): """Generate the output images for all the nodes in the input.""" deps_map = json.loads(data) for package in deps_map: lines = GenerateDotGraph(package, deps_map, options) filename = os.path.join(options.output_dir, GetOutputBaseName(deps_map[package], options)) save_dot_filename = None if options.save_dot: save_dot_filename = filename + '.dot' dot_helper.GenerateImage(lines, filename, options.format, save_dot_filename)
def main(argv): parser = commandline.ArgumentParser(description=__doc__) parser.add_argument('-f', '--format', default='svg', help='Dot output format (png, svg, etc.).') parser.add_argument('-o', '--output-dir', default='.', help='Output directory.') parser.add_argument('-s', '--save-dot', action='store_true', help='Save dot files.') parser.add_argument('inputs', nargs='+') options = parser.parse_args(argv) input_deps = [] for i in options.inputs: with open(i) as handle: input_deps.append(json.loads(handle.read())) version_map = GetVersionMap(input_deps) divergent_set = GetDivergentSet(version_map, len(input_deps)) # Get all the output directories all_dirs = set(os.path.dirname(pkg) for pkg in divergent_set) for i in all_dirs: try: os.makedirs(os.path.join(options.output_dir, i)) except OSError: # The directory already exists. pass for pkg in divergent_set: filename = os.path.join(options.output_dir, pkg) + '.' + options.format save_dot_filename = None if options.save_dot: save_dot_filename = filename + '.dot' graph = BuildDependencyGraph(pkg, input_deps, version_map, divergent_set) lines = graph.Gen() dot_helper.GenerateImage(lines, filename, options.format, save_dot_filename)