Architecture¶
invenio-publish is an installed Transpiler-Mate plugin. The runtime resolves
the CWL source and normalizes its document-level Schema.org metadata as a
SoftwareApplication; the plugin owns the InvenioRDM interaction.
The plugin creates an authenticated invenio-rest-api-client session using
base_url and auth_token, then chooses one of two paths:
No metadata identifier -> create draft -> reserve DOI
Existing DOI identifier -> derive record ID -> create new-version draft
|
v
upload files -> update metadata -> publish
The metadata mapping uses the InvenioRDM workflow resource type and transfers the title, description, publisher, software version, creators, contributors, affiliations, ORCID-like identifiers, and supported contributor roles. Access to the record and attached files is set to public before publication.
The generated client models both regular RDMRecord and ZenodoRecord
responses, which is why the same code path can target a compatible standalone
InvenioRDM service or Zenodo.
The package follows this layout:
src/invenio_publish/
tests/
docs/
The package does not expose its own executable. Its Python entry point is
discovered by transpiler-mate-runtime, which generates the command options
from InvenioPublisherOptions.