Skip to content

Terradue/transpiler-mate

Repository files navigation

Transpiler Mate

Transpiler Mate is a Python library and CLI that extracts schema.org/SoftwareApplication metadata from annotated CWL documents and converts it into publication-ready formats.

What It Does

Given an input CWL metadata source, Transpiler Mate can:

  • Generate CodeMeta JSON-LD.
  • Generate DataCite metadata payloads.
  • Generate OGC API - Records payloads.
  • Generate Markdown documentation for workflows.
  • Generate OCI Annotations.
  • Publish records to InvenioRDM.
  • Bump semantic versions in metadata files.

Documentation: https://terradue.github.io/transpiler-mate/

Supported Outputs

Requirements

  • Python >= 3.10

Installation

From source (recommended for development)

git clone https://github.com/Terradue/transpiler-mate.git
cd transpiler-mate
pip install -e .

Install tooling for local workflows

pip install hatch ruff

CLI Usage

Entry point:

transpiler-mate --help

Main commands:

  • transpiler-mate codemeta <source> [--code-repository URL] [--output codemeta.json]
  • transpiler-mate datacite <source> [--output datacite.json]
  • transpiler-mate ogcrecord <source> [--output record.json]
  • transpiler-mate markdown <source> --workflow-id <id> [--output DIR] [--code-repository URL]
  • transpiler-mate oci-annotations <source> --workflow-id <id> [--image-source URL] [--image-revision ] [--output annotations.json]
  • transpiler-mate invenio-publish <source> --base-url URL --auth-token TOKEN [--attach FILE ...]
  • transpiler-mate bump-version <source> [--version-part major|minor|patch|build|pre-release]

Examples

Generate CodeMeta:

transpiler-mate codemeta ./metadata.cwl --output ./dist/codemeta.json

Generate DataCite metadata:

transpiler-mate datacite ./metadata.cwl --output ./dist/datacite.json

Generate OGC Record:

transpiler-mate ogcrecord ./metadata.cwl --output ./dist/record.json

Generate Markdown documentation:

transpiler-mate markdown ./workflow.cwl --workflow-id main --output ./docs

Publish to InvenioRDM:

export INVENIO_AUTH_TOKEN="<token>"
transpiler-mate invenio-publish ./metadata.cwl --base-url https://invenio.example.org --auth-token "$INVENIO_AUTH_TOKEN"

Development

Run lint and formatting checks:

hatch run dev:check
hatch run dev:lint

Run tests for one interpreter:

hatch run test.py3.12:test-q

Run full Hatch test matrix (local environment permitting):

hatch run test:test-q

Project Tasks

Taskfile.yaml includes helper tasks for schema/model generation and quality checks:

  • task test
  • task check
  • task lint

License

Apache License 2.0. See LICENSE.

About

Python API + CLI to extract Schema.org/SoftwareApplication Metadata from an annotated CWL document and publish it as a Record on Invenio RDM

Resources

License

Stars

Watchers

Forks

Contributors