import argparse
from .client import (
cmd_add_node, cmd_remove_node, cmd_add_edge, cmd_remove_edge,
cmd_edit_status, cmd_edit_position, cmd_edit_wrapper,
cmd_edit_node_label, cmd_save_node_log, cmd_edit_edge_type
)
from workforce.utils import compute_workspace_id, get_absolute_path, default_workfile
[docs]
def main():
parser = argparse.ArgumentParser(prog="wf-edit", description="Workforce edit CLI")
sub = parser.add_subparsers(dest="cmd", required=True)
en = sub.add_parser("add-node")
en.add_argument("base_url")
en.add_argument("label")
en.add_argument("--x", type=float, default=0)
en.add_argument("--y", type=float, default=0)
en.add_argument("--status", default="")
en.set_defaults(func=cmd_add_node)
ern = sub.add_parser("remove-node")
ern.add_argument("base_url")
ern.add_argument("node_id")
ern.set_defaults(func=cmd_remove_node)
ee = sub.add_parser("add-edge")
ee.add_argument("base_url")
ee.add_argument("source")
ee.add_argument("target")
ee.add_argument("--type", dest="edge_type", choices=["blocking", "non_blocking", "non-blocking"], default="blocking")
ee.set_defaults(func=cmd_add_edge)
eet = sub.add_parser("edit-edge-type")
eet.add_argument("base_url")
eet.add_argument("source")
eet.add_argument("target")
eet.add_argument("--type", dest="edge_type", choices=["blocking", "non_blocking", "non-blocking"], default="blocking")
eet.set_defaults(func=cmd_edit_edge_type)
ere = sub.add_parser("remove-edge")
ere.add_argument("base_url")
ere.add_argument("source")
ere.add_argument("target")
ere.set_defaults(func=cmd_remove_edge)
es = sub.add_parser("edit-status")
es.add_argument("base_url")
es.add_argument("element_type", choices=["node", "edge"])
es.add_argument("element_id")
es.add_argument("value")
es.set_defaults(func=cmd_edit_status)
ep = sub.add_parser("edit-position")
ep.add_argument("base_url")
ep.add_argument("node_id")
ep.add_argument("x", type=float)
ep.add_argument("y", type=float)
ep.set_defaults(func=cmd_edit_position)
ew = sub.add_parser("edit-wrapper")
ew.add_argument("base_url")
ew.add_argument("wrapper")
ew.set_defaults(func=cmd_edit_wrapper)
enl = sub.add_parser("edit-node-label")
enl.add_argument("base_url")
enl.add_argument("node_id")
enl.add_argument("label")
enl.set_defaults(func=cmd_edit_node_label)
sn = sub.add_parser("save-node-log")
sn.add_argument("base_url")
sn.add_argument("node_id")
sn.add_argument("log")
sn.set_defaults(func=cmd_save_node_log)
args = parser.parse_args()
# base_url passed as first arg in each subcommand; call the mapped function
kwargs = vars(args)
func = kwargs.pop("func")
base_url = kwargs.pop("base_url")
# Compute workspace_id from default workfile (same as other CLI commands)
wf_path = default_workfile()
workspace_id = compute_workspace_id(get_absolute_path(wf_path))
func(args, base_url, workspace_id)