diff --git a/dvc/command/show_pipeline.py b/dvc/command/show_pipeline.py index 8184e66cc..e8e168bf4 100644 --- a/dvc/command/show_pipeline.py +++ b/dvc/command/show_pipeline.py @@ -2,6 +2,7 @@ import os import networkx as nx from dvc.command.traverse import Traverse +from dvc.command.init import CmdInit from dvc.logger import Logger from dvc.state_file import StateFile @@ -12,11 +13,12 @@ class CmdShowPipeline(Traverse): self.g = nx.DiGraph() self.subs = [] - def draw(self, g, target, fname): + def draw(self, g, target, fname_suffix): + fname = 'pipeline_' + fname_suffix try: A = nx.nx_agraph.to_agraph(g) A.write(fname + '.dot') - A.draw(fname + '.svg', prog='dot') + A.draw(fname + '.jpeg', format='jpeg', prog='dot') except Exception as exc: Logger.error('Failed to draw dependency graph for {}: {}'.format(target, exc)) return 1 @@ -30,16 +32,16 @@ class CmdShowPipeline(Traverse): return self.g - def draw_targets(self): - if self.parsed_args.target == None: + def draw_targets(self, target): + if not target: target = self.settings.config.data_dir return self.draw(self.g, target, target) for t in self.parsed_args.target: - fname = os.path.basename(os.path.normpath(t)) + fname_suffix = os.path.basename(os.path.normpath(t)) s = self.find_sub(t) - ret = self.draw(s, t, fname) + ret = self.draw(s, t, fname_suffix) if ret != 0: return ret @@ -61,13 +63,16 @@ class CmdShowPipeline(Traverse): # when a bunch of data items were used independently. self.subs = nx.weakly_connected_component_subgraphs(self.g) - return self.draw_targets() + return self.draw_targets(saved_targets) def process_file(self, target): data_item = self._get_data_item(target) name = data_item.data.relative state = StateFile.load(data_item.state.relative, self.git) + if name == os.path.join(self.settings.config.data_dir, CmdInit.EMPTY_FILE_NAME): + return + self.g.add_node(name) for i in state.input_files: diff --git a/dvc/graph/workflow.py b/dvc/graph/workflow.py index 7f839b602..846b21fdf 100644 --- a/dvc/graph/workflow.py +++ b/dvc/graph/workflow.py @@ -124,10 +124,10 @@ class Workflow(object): g.add_edge(commit.hash, p) A = nx.nx_agraph.to_agraph(g) - fname = 'workflow.jpeg' + fname = 'workflow' A = A.to_undirected() A.write(fname + '.dot') - A.draw(fname, format='jpeg', prog='dot') + A.draw(fname + '.jpeg', format='jpeg', prog='dot') pass def modify_workflow(self, show_all_commits, show_dvc_commits):