Files
revng-revng/python/revng/pypeline/schema.yml
Giacomo Vercesi 644b71b319 pypeline: add additional artifact PTML metadata
Add two additional fields to `Artifact`: `defined_locations` and
`preferred_artifacts`. These are pieces of metadata that allow
navigation between multiple PTML-enabled documents.
2026-03-31 17:00:48 +02:00

214 lines
5.6 KiB
YAML

#
# This file is distributed under the MIT License. See LICENSE.md for details.
#
$schema: http://json-schema.org/draft-07/schema#
title: Pipeline Schema
$defs:
pipeline:
type: object
required:
- containers
- branches
additionalProperties: false
properties:
artifact_categories:
type: array
items:
type: object
required:
- name
- show-by-default
properties:
name:
type: string
description: Name of the artifact category
show-by-default:
type: boolean
description: Whether to show the artifact by default
containers:
type: array
uniqueItems: true
items:
$ref: "#/$defs/container_decl"
analysis-lists:
$ref: "#/$defs/analysis_lists"
analyses:
type: array
items:
type: string
branches:
type: object
patternProperties:
^[a-zA-Z0-9_]+$:
type: object
required:
- tasks
additionalProperties: false
properties:
from:
type: string
description: The current branch will start from the end of the given branch.
example: root
tasks:
type: array
items:
anyOf:
- $ref: "#/$defs/pipe"
- $ref: "#/$defs/savepoint"
description: A list of tasks in the branch, each task is a pipe.
minItems: 1
analysis_lists:
type: array
additionalProperties: false
items:
$ref: "#/$defs/analysis_list"
analysis_list:
type: object
required:
- name
- analyses
additionalProperties: false
properties:
name:
type: string
description: The name of the analyses list.
example: all_analyses
analyses:
type: array
items:
type: string
description: A list of analysis names.
minItems: 1
description:
type: string
description: A description of the analyses list that will appear in the CLI help.
container_decl:
type: object
required:
- name
- type
additionalProperties: false
properties:
name:
type: string
description: The name of the container.
example: my_container
type:
type: string
description: The type of the container.
example: llvm_module
args:
type: array
items:
type: string
description: A list of container names that cannot be empty.
example:
- container1
- container2
minItems: 1
pipe:
type: object
additionalProperties: false
required:
- pipe
- arguments
properties:
pipe:
type: string
description: The name of the pipe.
example: my_pipe
configuration:
type: [string, object]
description: |
The static configuration for the pipe, if any. Can be either a string
or an object. If an object the content will be re-serialized in YAML
and passed to the pipe constructor as a string.
arguments:
$ref: "#/$defs/args"
description: The names of the containers to pass to the pipe.
artifacts:
type: array
items:
$ref: "#/$defs/artifact"
minItems: 1
analyses:
type: array
items:
$ref: "#/$defs/analysis"
minItems: 1
savepoint:
type: object
required:
- savepoint
- containers
additionalProperties: false
properties:
savepoint:
type: string
description: The name of the savepoint.
containers:
$ref: "#/$defs/args"
description: The names of the containers the savepoint will cache.
artifacts:
type: array
items:
$ref: "#/$defs/artifact"
minItems: 1
analyses:
type: array
items:
$ref: "#/$defs/analysis"
minItems: 1
analysis:
type: object
required:
- analysis
- containers
additionalProperties: false
properties:
analysis:
type: string
description: The name of the analysis to run.
containers:
$ref: "#/$defs/args"
description: The names of the containers the analysis will need.
artifact:
type: object
required:
- name
- container
additionalProperties: false
properties:
name:
type: string
description: The name of the artifact.
example: my_artifact
container:
type: string
description: The container that will produce the artifact.
example: my_container
category:
type: string
description: >
The category of the artifact, must be one of the ones specified in
'artifact_categories'. Specifying categories makes this field compulsory.
description:
type: string
description: The description of the artifact that will appear in the CLI help.
filename:
type: string
description: The filename to use when representing this artifact
defined_locations:
type: array
description: PTML locations that are present in this artifact
items:
type: string
preferred_artifacts:
type: array
description: >
other artifacts where it's preferred to look for definitions of
locations defined in this one
items:
type: string