Skip to content

Commit

Permalink
Add option to dump workflow spec (#29)
Browse files Browse the repository at this point in the history
  • Loading branch information
jbirddog authored Feb 9, 2024
1 parent acb355f commit 1764038
Show file tree
Hide file tree
Showing 9 changed files with 34 additions and 18 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md → CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# CHANGELOG

## v0.1.9

1. Moved argparse logic out of script task and into runner
1. Added option --dump-spec to dump the workflow spec
1. Bump to SpiffWorkflow 3.0.0rc2

## v0.1.8

1. Fixed issue when `$EDITOR` contained spaces
Expand Down
11 changes: 0 additions & 11 deletions TODO.md

This file was deleted.

2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.1.8
0.1.9
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
SpiffWorkflow==2.0.1
SpiffWorkflow==3.0.0rc2
3 changes: 2 additions & 1 deletion src/git_debranch/bpmn/git-debranch/all_branches.bpmn
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
</spiffworkflow:parameters>
</spiffworkflow:serviceTaskOperator>
<spiffworkflow:preScript>spawn_args = ["git", "fetch", "-p"]</spiffworkflow:preScript>
<spiffworkflow:postScript>del(spawn_args)</spiffworkflow:postScript>
<spiffworkflow:postScript>del(spawn_args)
del(result)</spiffworkflow:postScript>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1pz1noe</bpmn:incoming>
<bpmn:outgoing>Flow_1ogqfb8</bpmn:outgoing>
Expand Down
8 changes: 6 additions & 2 deletions src/git_debranch/console_scripts.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import argparse
import sys

from git_debranch import workflow

def main():
result = workflow.run(sys.argv)
argv = sys.argv
if "--dump-spec" in argv:
print(workflow.spec_json())
exit(0)

result = workflow.run(argv)

if result.stderr:
print(result.stderr, file=sys.stderr)
Expand Down
2 changes: 1 addition & 1 deletion src/git_debranch/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

def run_workflow(workflow):
while not workflow.is_completed():
tasks = workflow.get_tasks(TaskState.READY)
tasks = workflow.get_tasks(state=TaskState.READY)
task = tasks[0] if len(tasks) > 0 else None
if task is None:
break
Expand Down
2 changes: 1 addition & 1 deletion src/git_debranch/script_engine.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import json
import subprocess

from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
from SpiffWorkflow.bpmn.script_engine import PythonScriptEngine

class CustomScriptEngine(PythonScriptEngine):
def call_service(self, operation_name, operation_params, task_data):
Expand Down
16 changes: 16 additions & 0 deletions src/git_debranch/workflow.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import json

from dataclasses import dataclass

from SpiffWorkflow.bpmn.serializer.workflow import BpmnWorkflowSerializer
from SpiffWorkflow.bpmn.specs.control import BpmnStartTask
from SpiffWorkflow.spiff.serializer.config import SPIFF_CONFIG

from git_debranch.loader import load_workflow
from git_debranch.runner import run_workflow
Expand All @@ -27,3 +31,15 @@ def run(argv):
returncode = result.get("returncode", 0 if completed else -1)
return WorkflowResult(completed, stderr, stdout, returncode)

def spec_json():
registry = BpmnWorkflowSerializer.configure(SPIFF_CONFIG)
serializer = BpmnWorkflowSerializer(registry=registry)
workflow = load_workflow()
workflow_dct = serializer.to_dict(workflow)
workflow_specs_dct = {
"serializer_version": "jbirddog/git-debranch",
"spec": workflow_dct["spec"],
"subprocess_specs": workflow_dct["subprocess_specs"],
}
return json.dumps(workflow_specs_dct, sort_keys=True, indent=2)

0 comments on commit 1764038

Please sign in to comment.