mirror of
https://github.com/revng/revng
synced 2026-06-21 14:07:57 +00:00
dfb9a36bb2
Implement compression of objects before they are saved into the storage provider. Each container type can specify which algorithm to use (currently `none` or `zstd`) and the compression level.
269 lines
7.1 KiB
YAML
269 lines
7.1 KiB
YAML
#
|
|
# This file is distributed under the MIT License. See LICENSE.md for details.
|
|
#
|
|
|
|
$schema: http://json-schema.org/draft-07/schema#
|
|
title: PipelineDescription
|
|
type: object
|
|
required:
|
|
- version
|
|
- model
|
|
- kinds
|
|
- container_types
|
|
- containers
|
|
- root_node_id
|
|
- nodes
|
|
- artifacts
|
|
- analyses
|
|
- analyses_lists
|
|
properties:
|
|
version:
|
|
type: string
|
|
description: The version of the pipeline
|
|
model:
|
|
type: object
|
|
description: Metadata about the type of the model
|
|
required:
|
|
- identifier
|
|
- name
|
|
- mime_type
|
|
- is_text
|
|
properties:
|
|
identifier:
|
|
type: string
|
|
description: >
|
|
An identifier unique to the model class used by the pipeline
|
|
name:
|
|
type: string
|
|
description: The expected name of the model file
|
|
mime_type:
|
|
type: string
|
|
description: The MIME type of the model
|
|
is_text:
|
|
type: boolean
|
|
description: Whether the model holds text content
|
|
kinds:
|
|
type: array
|
|
description: List of object kinds in the pipeline
|
|
items:
|
|
type: object
|
|
required:
|
|
- name
|
|
- parent
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The name of the kind
|
|
parent:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: >
|
|
The name of the parent kind, or null if this is a root kind
|
|
container_types:
|
|
type: array
|
|
description: List of container types available in the pipeline
|
|
items:
|
|
type: object
|
|
required:
|
|
- class
|
|
- mime_type
|
|
- is_text
|
|
- kind
|
|
- compression
|
|
properties:
|
|
class:
|
|
type: string
|
|
description: The class name of the container
|
|
mime_type:
|
|
type: string
|
|
description: The MIME type of the container's content
|
|
is_text:
|
|
type: boolean
|
|
description: Whether the container holds text content
|
|
kind:
|
|
type: string
|
|
description: The kind of objects this container holds
|
|
compression:
|
|
type: string
|
|
description: The compression used by this container
|
|
containers:
|
|
type: object
|
|
description: Mapping of container names to their type
|
|
patternProperties:
|
|
"^.*$":
|
|
type: string
|
|
root_node_id:
|
|
type: integer
|
|
description: The ID of the root node in the pipeline
|
|
nodes:
|
|
type: array
|
|
description: List of all nodes in the pipeline
|
|
items:
|
|
type: object
|
|
required:
|
|
- id
|
|
- type
|
|
- class
|
|
- arguments
|
|
- successors
|
|
- predecessors
|
|
- savepoint_range
|
|
properties:
|
|
id:
|
|
type: integer
|
|
description: The unique identifier of the node
|
|
type:
|
|
type: string
|
|
enum:
|
|
- pipe
|
|
- savepoint
|
|
description: The type of the node
|
|
class:
|
|
type: string
|
|
description: The class name of the node
|
|
arguments:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of container names this node operates on
|
|
successors:
|
|
type: array
|
|
items:
|
|
type: integer
|
|
description: List of node IDs that follow this node
|
|
predecessors:
|
|
type: array
|
|
items:
|
|
type: integer
|
|
description: List of node IDs that precede this node
|
|
savepoint_range:
|
|
type: object
|
|
required:
|
|
- start
|
|
- end
|
|
properties:
|
|
start:
|
|
type: integer
|
|
description: The starting savepoint ID
|
|
end:
|
|
type: integer
|
|
description: The ending savepoint ID
|
|
description: The range of savepoints this node spans
|
|
artifacts:
|
|
type: array
|
|
description: List of artifacts that can be produced by the pipeline
|
|
items:
|
|
type: object
|
|
required:
|
|
- name
|
|
- savepoint_id
|
|
- container
|
|
- category
|
|
- pipe_dependencies
|
|
- defined_locations
|
|
- preferred_artifacts
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The name of the artifact
|
|
savepoint_id:
|
|
type: integer
|
|
description: The node_id that the artifact is associated to
|
|
container:
|
|
type: string
|
|
description: The name of the container instance
|
|
pipe_dependencies:
|
|
type: array
|
|
description: >
|
|
List of pipes (starting from the root node) that this artifact
|
|
depends on. This is required to compute, given a global
|
|
configuration, which keys effect the artifact.
|
|
items:
|
|
type: string
|
|
category:
|
|
type: object
|
|
required:
|
|
- name
|
|
- show_by_default
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The name of the category
|
|
show_by_default:
|
|
type: boolean
|
|
description: >
|
|
Setting this to true will show the artifacts of this category
|
|
by default
|
|
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 referenced in this one
|
|
items:
|
|
type: string
|
|
analyses:
|
|
type: array
|
|
description: List of analyses available in the pipeline
|
|
items:
|
|
type: object
|
|
required:
|
|
- name
|
|
- bindings
|
|
- node
|
|
- is_available
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The name of the analysis
|
|
is_available:
|
|
type: boolean
|
|
description: if the analysis can be currently run
|
|
bindings:
|
|
type: array
|
|
items:
|
|
type: object
|
|
required:
|
|
- name
|
|
- container_type
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The name of the bound container
|
|
container_type:
|
|
type: string
|
|
description: The class name of the container type
|
|
description: List of container bindings for this analysis
|
|
node:
|
|
type: integer
|
|
description: The ID of the node this analysis is bound to
|
|
analyses_lists:
|
|
type: array
|
|
description: List of named groups of analyses
|
|
items:
|
|
type: object
|
|
required:
|
|
- name
|
|
- analyses
|
|
- description
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The name of the analysis list
|
|
analyses:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of analysis names in this group
|
|
description:
|
|
type: ["string", "null"]
|
|
description: A description of the analysis list
|