mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-11 07:18:28 +01:00
Separate show pipeline and workflow
This commit is contained in:
+24
-10
@@ -11,14 +11,16 @@ from dvc.command.data_sync import CmdDataSync, CmdDataPush, CmdDataPull, CmdData
|
||||
from dvc.command.lock import CmdLock
|
||||
from dvc.command.gc import CmdGC
|
||||
from dvc.command.import_file import CmdImportFile
|
||||
from dvc.command.show_workflow import CmdShowWorkflow
|
||||
from dvc.command.target import CmdTarget
|
||||
from dvc.command.instance_create import CmdInstanceCreate
|
||||
from dvc.command.config import CmdConfig
|
||||
from dvc.command.show import CmdShow
|
||||
from dvc.command.show_pipeline import CmdShowPipeline
|
||||
from dvc.command.test import CmdTest
|
||||
from dvc.config import Config
|
||||
from dvc import VERSION
|
||||
|
||||
|
||||
def parse_args(argv=None):
|
||||
# Common args
|
||||
parent_parser = argparse.ArgumentParser(add_help=False)
|
||||
@@ -398,17 +400,29 @@ def parse_args(argv=None):
|
||||
show_parser = subparsers.add_parser(
|
||||
'show',
|
||||
parents=[parent_parser],
|
||||
help='Create a dependency graph for data')
|
||||
show_parser.add_argument(
|
||||
help='Show graphs')
|
||||
show_subparsers = show_parser.add_subparsers(
|
||||
dest='cmd',
|
||||
help='Use `dvc show CMD` --help for command-specific help')
|
||||
pipeline_parser = show_subparsers.add_parser(
|
||||
'pipeline',
|
||||
parents=[parent_parser],
|
||||
help='Show pipeline image')
|
||||
pipeline_parser.add_argument(
|
||||
'target',
|
||||
nargs='*',
|
||||
help='Target data')
|
||||
show_parser.add_argument('-w',
|
||||
'--workflow',
|
||||
action='store_true',
|
||||
default=False,
|
||||
help='Show workflow')
|
||||
show_parser.set_defaults(func=CmdShow)
|
||||
help='Target data directory')
|
||||
pipeline_parser.set_defaults(func=CmdShowPipeline)
|
||||
|
||||
workflow_parser = show_subparsers.add_parser(
|
||||
'workflow',
|
||||
parents=[parent_parser],
|
||||
help='Show workflow image')
|
||||
workflow_parser.add_argument(
|
||||
'target',
|
||||
nargs='?',
|
||||
help='Target metric data file')
|
||||
workflow_parser.set_defaults(func=CmdShowWorkflow)
|
||||
|
||||
if isinstance(argv, str):
|
||||
argv = argv.split()
|
||||
|
||||
@@ -2,15 +2,13 @@ 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
|
||||
|
||||
|
||||
class CmdShow(Traverse):
|
||||
class CmdShowPipeline(Traverse):
|
||||
def __init__(self, settings):
|
||||
super(CmdShow, self).__init__(settings, "collect", do_not_start_from_root=False)
|
||||
super(CmdShowPipeline, self).__init__(settings, "collect", do_not_start_from_root=False)
|
||||
self.g = nx.DiGraph()
|
||||
self.subs = []
|
||||
|
||||
@@ -48,35 +46,10 @@ class CmdShow(Traverse):
|
||||
return 0
|
||||
|
||||
def run(self):
|
||||
if self.parsed_args.workflow:
|
||||
# Workflow
|
||||
target = self.settings.parsed_args.target
|
||||
if not target:
|
||||
target = self.settings.config.target_file
|
||||
|
||||
if not os.path.exists(target):
|
||||
Logger.warn(u'Target is not defined: use empty target')
|
||||
target = ''
|
||||
else:
|
||||
target = open(target).read()
|
||||
Logger.debug(u'Set show workflow target as {}'.format(target))
|
||||
|
||||
if type(target) is list:
|
||||
if len(target) != 1:
|
||||
msg = 'Only one target is expected for show workflow command. Target: {}'
|
||||
Logger.error(msg.format(target))
|
||||
return 1
|
||||
|
||||
target = target[0]
|
||||
|
||||
wf = self.git.get_all_commits(target, self.settings)
|
||||
wf.build_graph()
|
||||
return
|
||||
|
||||
saved_targets = self.settings.parsed_args.target
|
||||
self.settings.parsed_args.target = [self.settings.config.data_dir]
|
||||
|
||||
ret = super(CmdShow, self).run()
|
||||
ret = super(CmdShowPipeline, self).run()
|
||||
|
||||
self.settings.parsed_args.target = saved_targets
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
import os
|
||||
|
||||
from dvc.command.base import CmdBase
|
||||
from dvc.logger import Logger
|
||||
|
||||
|
||||
class CmdShowWorkflow(CmdBase):
|
||||
def __init__(self, settings):
|
||||
super(CmdShowWorkflow, self).__init__(settings)
|
||||
|
||||
def run(self):
|
||||
target = self.settings.parsed_args.target
|
||||
if not target:
|
||||
target = self.settings.config.target_file
|
||||
|
||||
if not os.path.exists(target):
|
||||
Logger.warn(u'Target is not defined: use empty target')
|
||||
target = ''
|
||||
else:
|
||||
target = open(target).read()
|
||||
Logger.debug(u'Set show workflow target as {}'.format(target))
|
||||
|
||||
wf = self.git.get_all_commits(target, self.settings)
|
||||
wf.build_graph()
|
||||
return 0
|
||||
|
||||
@property
|
||||
def no_git_actions(self):
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
def not_committed_changes_warning():
|
||||
pass
|
||||
Reference in New Issue
Block a user