{"id":13296984,"url":"https://github.com/tom-tan/ep3","last_synced_at":"2025-04-14T16:12:50.165Z","repository":{"id":56373958,"uuid":"228321092","full_name":"tom-tan/ep3","owner":"tom-tan","description":"A workflow engine for CWL that aims to have a pluggable architecture","archived":false,"fork":false,"pushed_at":"2022-04-03T13:56:45.000Z","size":395,"stargazers_count":10,"open_issues_count":1,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-22T19:41:59.695Z","etag":null,"topics":["common-workflow-language","commonwl","cwl","workflow","workflow-engine"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tom-tan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-16T06:47:19.000Z","updated_at":"2024-07-22T15:47:59.000Z","dependencies_parsed_at":"2022-08-15T17:31:24.714Z","dependency_job_id":null,"html_url":"https://github.com/tom-tan/ep3","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tom-tan%2Fep3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tom-tan%2Fep3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tom-tan%2Fep3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tom-tan%2Fep3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tom-tan","download_url":"https://codeload.github.com/tom-tan/ep3/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240704157,"owners_count":19844238,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["common-workflow-language","commonwl","cwl","workflow","workflow-engine"],"created_at":"2024-07-29T17:21:20.758Z","updated_at":"2025-02-25T16:31:20.372Z","avatar_url":"https://github.com/tom-tan.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ep3: Extremely Pluggable Pipeline Processor\n\n[![Actions Status](https://github.com/tom-tan/ep3/workflows/ci/badge.svg)](https://github.com/tom-tan/ep3/actions)\n[![license](https://badgen.net/github/license/tom-tan/ep3)](https://github.com/tom-tan/ep3/blob/master/LICENSE)\n\nThis is a workflow engine for the [Common Workflow Language](https://www.commonwl.org) which aims to have a pluggable architecture.\n\n## Conformance tests for CWL v1.0 for the latest release\n[![release](https://badgen.net/github/release/tom-tan/ep3)](https://github.com/tom-tan/ep3/releases/latest) ![commit](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/commit.json)\n### Classes\n[![CommandLineTool](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/command_line_tool.json?icon=commonwl)](https://www.commonwl.org/v1.0/CommandLineTool.html) [![ExpressionTool](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/expression_tool.json?icon=commonwl)](https://www.commonwl.org/v1.0/Workflow.html#ExpressionTool) [![Workflow](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/workflow.json?icon=commonwl)](https://www.commonwl.org/v1.0/Workflow.html)\n\n### Required features\n[![Required](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/required.json?icon=commonwl)](https://www.commonwl.org/v1.0/)\n\n### Optional features\n[![DockerRequirement](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/docker.json?icon=commonwl)](https://www.commonwl.org/v1.0/CommandLineTool.html#DockerRequirement) [![EnvVarRequirement](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/env_var.json?icon=commonwl)](https://www.commonwl.org/v1.0/CommandLineTool.html#EnvVarRequirement) [![InitialWorkDirRequirement](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/initial_work_dir.json?icon=commonwl)](https://www.commonwl.org/v1.0/CommandLineTool.html#InitialWorkDirRequirement) [![InlineJavascriptRequirement](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/inline_javascript.json?icon=commonwl)](https://www.commonwl.org/v1.0/CommandLineTool.html#InlineJavascriptRequirement) [![MultipleInputFeatureRequirement](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/multiple_input.json?icon=commonwl)](https://www.commonwl.org/v1.0/Workflow.html#MultipleInputFeatureRequirement) [![ResourceRequirement](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/resource.json?icon=commonwl)](https://www.commonwl.org/v1.0/CommandLineTool.html#ResourceRequirement) [![ScatterFeatureRequirement](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/scatter.json?icon=commonwl)](https://www.commonwl.org/v1.0/Workflow.html#ScatterFeatureRequirement) [![SchemaDefRequirement](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/schema_def.json?icon=commonwl)](https://www.commonwl.org/v1.0/CommandLineTool.html#SchemaDefRequirement) [![ShellCommandRequirement](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/shell_command.json?icon=commonwl)](https://www.commonwl.org/v1.0/CommandLineTool.html#ShellCommandRequirement) [![StepInputExpressionRequirement](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/step_input.json?icon=commonwl)](https://www.commonwl.org/v1.0/Workflow.html#StepInputExpressionRequirement) [![SubworkflowFeatureRequirement](https://badgen.net/https/raw.githubusercontent.com/tom-tan/conformance/master/ep3/cwl_v1.0/ep3_latest/subworkflow.json?icon=commonwl)](https://www.commonwl.org/v1.0/Workflow.html#SubworkflowFeatureRequirement)\n\nNotes:\n- ep3 will not pass the test #61 with `required` and `command_line_tool` tags due to [common-workflow-language#761](https://github.com/common-workflow-language/common-workflow-language/issues/761).\n- The conformance badge for [SoftwareRequirement](https://www.commonwl.org/v1.0/CommandLineTool.html#SoftwareRequirement) is not available because there are no conformance tests for this feature.\n- Currently `ScatterFeatureRequirement` (`scatter` tag) and `StepInputExpressionRequirement` (`step_input` tag) are not supported.\n  - It affects the result of the tests of `Workflow` (`workflow` tag), `InlineJavascriptRequirement` (`inline_javascript` tag), `MultipleInputFeatureRequirement` (`multiple_input` tag) and `SubworkflowFeatureRequirement` (`subworkflow` tag).\n\n## Requirements\n- [medal](https://github.com/tom-tan/medal)\n- bash\n- [ruby](https://www.ruby-lang.org) 2.5.1 or later\n- [jq](https://stedolan.github.io/jq/)\n- [nodejs](https://nodejs.org) for `InlineJavascriptRequirement`\n- [docker](https://www.docker.com/) for `DockerRequirement`\n\n## How to install\n- Install `medal`, `bash`, `ruby`, `jq`, `nodejs` and `docker`\n- Execute the following commands and add `/path/to/ep3` to `$PATH`.\n```console\n$ git clone --recursive https://github.com/tom-tan/ep3.git\n```\n\n## Usage\nSee `ep3-runner --help` for details.\n```console\n$ ep3-runner \u003ccwl\u003e [job]\n```\nIt prints the log and debug outputs to stderr and prints the output object to stdout. Both types of outputs are printed in [JSON Lines](http://jsonlines.org) format.\n\nHere is an example:\n```console\n$ ep3-runner --quiet /path/to/ep3/examples/workflow.cwl /path/to/ep3/examples/inputs.yml | jq .\n{\n  \"output\": {\n    \"class\": \"File\",\n    \"location\": \"file:///current/directory/output\",\n    \"path\": \"/current/directory/output\",\n    \"basename\": \"output\",\n    \"dirname\": \"/current/directory\",\n    \"nameroot\": \"output\",\n    \"nameext\": \"\",\n    \"checksum\": \"sha1$c28e458d4e943c743b9b3c46fdab10688a6d68b6\",\n    \"size\": 687\n  }\n}\n```\n\n## For developers\n### How to test\n```console\n$ git clone --recursive https://github.com/tom-tan/ep3.git\n$ cd ep3\n$ cwltest --tool $PWD/ep3-runner --test test.yml\nTest [1/1] Workflow example\nAll tests passed\n```\n\n### ep3 internals\nThe `ep3-runner` command consists of the following internal commands:\n- `ep3 init`\n  - Generates Petri nets for medal that represents a given CWL workflow (including internal states in workflow engines such as staging processes)\n- `ep3 run`\n  - Executes a medal to run a workflow\n- `ep3 list`\n  - Shows the output object for execution result\n- `ep3 resume` (Unimplemented)\n- `ep3 stop` (Unimplemented)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftom-tan%2Fep3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftom-tan%2Fep3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftom-tan%2Fep3/lists"}