Skip to content

Instantly share code, notes, and snippets.

@Frityet
Created October 10, 2021 02:05
Show Gist options
  • Save Frityet/43390d2415501441acf309363097078a to your computer and use it in GitHub Desktop.
Save Frityet/43390d2415501441acf309363097078a to your computer and use it in GitHub Desktop.
$schema: 'http://json-schema.org/draft-07/schema'
$id: https://raw.githubusercontent.com/H3VR-Modding/Mason/v1.0.0/schemas/project/root.json
type: object
title: Mason Project
description: A Mason project
examples:
- version: 1
ignore:
- C10
dependencies:
hard:
ExampleHardDependency: 1.2.3
soft:
- ExampleSoftDependency
incompatibilities:
- ExampleIncompatibility
processes:
- ExampleGame.exe
assets:
setup:
- path: setup/*
plugin: ExamplePlugin
loader: ExampleLoader
runtime:
name: Root
assets:
- path: runtime/unordered/*
plugin: ExamplePlugin
loader: ExampleLoader
nested:
- name: Ordered
sequential: true
assets:
- path: runtime/ordered/first
plugin: ExamplePlugin
loader: ExampleLoader
- path: runtime/ordered/second
plugin: ExamplePlugin
loader: ExampleLoader
required:
- version
properties:
version:
type: integer
title: Version
description: The version of Mason project to use when compiling
examples:
- 1
pattern: ^\d+$
ignore:
type: array
title: Ignored warnings
description: IDs of warnings to not display
examples:
- - C10
items:
type: string
title: Ignored warning
description: >-
An ID of a warning to not display. An ID is comprised by the scope (S:
standalone, C: compiler, P: patcher) and number
pattern: '^[SCP]\d+$'
examples:
- C10
additionalItems: false
dependencies:
type: object
title: Dependencies
description: Plugins that this project depends on
examples:
- hard:
ExampleHardDependency: 1.2.3
soft:
- ExampleSoftDependency
properties:
hard:
type: object
title: Hard dependencies
description: Plugins that must be present and their respective minimum versions
examples:
- ExampleHardDependency: 1.2.3
patternProperties:
'^[a-zA-Z0-9\._\-]+$':
type: string
title: Hard dependency
description: >-
The GUID of a plugin and and the minimum version that must be
present
pattern: ^\d+\.\d+(\.\d+(\.\d+)?)?$
examples:
- 1.2.3
additionalProperties: false
soft:
type: array
title: Soft dependencies
description: Plugins that must load before this project if present
examples:
- - ExampleSoftDependency
items:
type: string
title: Soft dependency
description: The GUID of a plugin that must load before this project if present
pattern: '^[a-zA-Z0-9\._\-]+$'
examples:
- ExampleSoftDependency
additionalItems: false
additionalProperties: false
additionalProperties: false
incompatibilities:
type: array
title: Incompatibilities
description: >-
Plugins that will cause this project to both not load, and display a
warning in the console
examples:
- - ExampleIncompatibility
items:
type: string
title: Incompatibility
description: >-
A plugin that will cause this project to both not load, and display a
warning in the console
pattern: '^[a-zA-Z0-9\._\-]+$'
examples:
- ExampleIncompatibility
additionalItems: false
processes:
type: array
title: Processes
description: Processes that this plugin can run under. None for any
examples:
- - ExampleGame.exe
items:
type: string
title: Process
description: The file name of a process that this plugin can run under
examples:
- ExampleGame.exe
additionalItems: false
assets:
type: object
title: Assets
description: Resources to be loaded via specific loaders
examples:
- setup:
- path: setup/*
plugin: ExamplePlugin
loader: ExampleLoader
runtime:
name: Root
assets:
- path: runtime/unordered/*
plugin: ExamplePlugin
loader: ExampleLoader
nested:
- name: Ordered
sequential: true
assets:
- path: runtime/ordered/first
plugin: ExamplePlugin
loader: ExampleLoader
- path: runtime/ordered/second
plugin: ExamplePlugin
loader: ExampleLoader
properties:
setup:
type: array
title: Assets
description: The assets to load during the setup stage
examples:
- - path: setup/*
plugin: ExamplePlugin
loader: ExampleLoader
items:
$ref: '#/definitions/asset'
additionalItems: false
runtime:
$ref: '#/definitions/asset_pipeline'
additionalProperties: false
additionalProperties: false
definitions:
asset:
type: object
title: Asset
description: A resource to be loaded into a loader
examples:
- path: setup/*
plugin: ExamplePlugin
loader: ExampleLoader
required:
- path
- plugin
- loader
properties:
path:
type: string
title: Path
description: The path to a resource. Globbing supported.
examples:
- setup/*
plugin:
type: string
title: Plugin
description: The plugin that contains the loader to use
examples:
- ExamplePlugin
loader:
type: string
title: Loader
description: The name of the loader to use
examples:
- ExampleLoader
additionalProperties: false
asset_pipeline:
type: object
title: Asset Pipeline
description: A collection of runtime assets to load in a particular manner
examples:
- name: Example Name
assets:
name: Root
assets:
- path: runtime/unordered/*
plugin: ExamplePlugin
loader: ExampleLoader
nested:
- name: Ordered
sequential: true
assets:
- path: runtime/ordered/first
plugin: ExamplePlugin
loader: ExampleLoader
- path: runtime/ordered/second
plugin: ExamplePlugin
loader: ExampleLoader
properties:
name:
type: string
title: Name
description: 'The human-readable name of the pipeline, used in the debug log'
examples:
- Root
- Ordered
sequential:
type: boolean
title: Sequential
description: >-
Waits for the previous nested pipeline or asset to finish loading
before beginning to load the next one
examples:
- true
assets:
type: array
title: Assets
description: >-
The assets to load as part of this pipeline. These will be ran after
nested pipelines.
examples:
- - path: runtime/unordered/*
plugin: ExamplePlugin
loader: ExampleLoader
- - path: runtime/ordered/first
plugin: ExamplePlugin
loader: ExampleLoader
- path: runtime/ordered/second
plugin: ExamplePlugin
loader: ExampleLoader
items:
$ref: '#/definitions/asset'
additionalItems: false
nested:
type: array
title: Nested Pipelines
description: >-
Additional pipelines to run. These will be ran before the current
pipeline's assets and respect the 'sequential' property.
examples:
- name: Ordered
sequential: true
assets:
- path: runtime/ordered/first
plugin: ExamplePlugin
loader: ExampleLoader
- path: runtime/ordered/second
plugin: ExamplePlugin
loader: ExampleLoader
items:
$ref: '#/definitions/asset_pipeline'
additionalItems: false
additionalProperties: false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment