Packages
[DRAFT] Packages and Plugins
Plugins are engine-wide and are used to modify the actual engine, e.g. add GUI components.
Packages are project specific and are used to add libraries and other code to projects, even assets.
File structure
marmalade-pkgs repo:
my-package/
package/
0.0.1/
manifest.json
package.json
plugin/
0.0.1/
manifest.json
plugin.json
info.json
README.md
(other assets used in README.md)
A package does not need to have both package
and plugin
directories. A package can just a package or just be a
plugin.
If a plugin and package is published in the same directory, both will be required to be installed by Marmalade. Typically, they will communicate with Marmalade APIs, i.e. the plugin displays the GUI to control the package. Both will need to be compatible with all versions of the accompanying package/plugin.
info.json
Basic package information.
{
"name": "My Package",
"description": "Description of my package",
"authors": [
"Marmalade"
],
"keywords": [
"scripting",
"lua",
"api",
"c",
"cpp",
"c++"
]
}
package.json or plugin.json
Version information.
{
"latest-version": "",
"latest-dev-version": "0.0.1"
}
manifest.json
Download and install information.
{
"version": "0.0.1",
"channel": "dev",
"min-engine-version": "0.0.1",
"downloads": [ // What to download and where to map to
{
"name": "artifacts",
"type": "tar.gz",
"src": "https://diesbackwards.com/download/marmalade/my-package-plugin-0.0.1.tar.gz",
"dest": "/" // '/' means plugin or package root
}
],
"artifacts": { // For plugins
"linux": "my-package.so",
"windows": "my-package.dll",
"darwin": "my-package.dylib"
}
}