Manifest Formats
Package manifests can be written in nearly any language. The following are all directly supported, but more could be implemented with little difficulty. The only requirement is a rust serde
implementation.
toml
The default format for manifests is toml. This is the format used in the examples in this book.
json
Package Manifest
{
"package": {
"name": "package-name",
"description": "A package description",
"authors": ["Author Name <Author Email>"],
"license": "License",
"homepage": "https://example.com",
"repository": "https://example.com",
"documentation": "https://example.com",
"readme": "README.md",
"keywords": ["keyword1", "keyword2"]
},
"dependencies": {
"dependency1": "1.0.0",
"dependency2": {
"version": "1.0.0",
"flavor": "flavor"
}
},
"flavors": {
"flavor": "path/to/flavor.json"
}
}
Flavor Manifest
{
"flavor": {
"description": "A flavor description",
"authors": ["Author Name <Author Email>"],
"license": "License",
"homepage": "https://example.com",
"repository": "https://example.com",
"documentation": "https://example.com",
"readme": "README.md"
},
"versions": {
"0.1.0": "path/to/0.1.0.json"
}
}
Version Manifest
{
"version": {
"authors": ["Author Name <Author Email>"],
"license": "License",
"homepage": "https://example.com",
"repository": "https://example.com",
"documentation": "https://example.com",
"readme": "README.md"
},
"step1": {
"type": "clone",
"url": "https://example.com",
"branch": "master",
"commit": "1234567890abcdef"
},
"step2": {
"type": "copy",
"source": "path/to/source",
"destination": "path/to/destination"
},
"step3": {
"type": "run",
"command": "command"
},
"install": {
"steps": ["step1", "step2", "step3"],
"artifacts": ["path/to/artifact1", "path/to/artifact2"]
}
"dependencies": {
"dependency1": "1.0.0",
"dependency2": {
"version": "1.0.0",
"flavor": "flavor"
}
}
}
yaml
Package Manifest
package:
name: package-name
description: A package description
authors:
- Author Name <Author Email>
license: License
homepage: https://example.com
repository: https://example.com
documentation: https://example.com
readme: README.md
keywords:
- keyword1
- keyword2
dependencies:
dependency1: 1.0.0
dependency2:
version: 1.0.0
flavor: flavor
flavors:
flavor: path/to/flavor.yaml
Flavor Manifest
flavor:
description: A flavor description
authors:
- Author Name <Author Email>
license: License
homepage: https://example.com
repository: https://example.com
documentation: https://example.com
readme: README.md
versions:
"0.1.0": path/to/0.1.0.yaml
Version Manifest
version:
authors:
- Author Name <Author Email>
license: License
homepage: https://example.com
repository: https://example.com
documentation: https://example.com
readme: README.md
step1:
type: clone
url: https://example.com
branch: master
commit: 1234567890abcdef
step2:
type: copy
source: path/to/source
destination: path/to/destination
step3:
type: run
command: command
install:
steps:
- step1
- step2
- step3
artifacts:
- path/to/artifact1
- path/to/artifact2
dependencies:
dependency1: 1.0.0
dependency2:
version: 1.0.0
flavor: flavor