diff --git a/packaging_apps_manifest.md b/packaging_apps_manifest.md new file mode 100644 index 00000000..dc5a9811 --- /dev/null +++ b/packaging_apps_manifest.md @@ -0,0 +1,53 @@ +## Manifest +The `manifest.json` file defines the app's constants, a bunch of values that YunoHost needs to identify the app and install it correctly. It looks like this: +```json +{ + "name": "Roundcube", + "id": "roundcube", + "description": { + "en": "Open Source Webmail software", + "fr": "Webmail Open Source" + }, + "license": "free", + "maintainer": { + "name": "kload", + "email": "kload@kload.fr", + "url": "http://kload.fr" + }, + "multi_instance": "true", + "arguments": { + "install" : [ + { + "name": "domain", + "ask": { + "en": "Choose a domain for Roundcube" + }, + "example": "domain.org" + }, + { + "name": "path", + "ask": { + "en": "Choose a path for Roundcube" + }, + "example": "/webmail", + "default": "/webmail" + } + ] + } +} +``` + +* **name**: the app name. It does not have to be unique, but it should be, since it is the name shown to all the YunoHost administrators in the app list. + +* **id**: the unique ID of the app. You have to ensure that this ID is unique before submit an app integration request. + +* **description**: the complete description of the app. You can make it as detailed as you feel it should be. Only `en` is required right now, but you can translate the description by prepending the locale prefix. + +* **license**: software license type: `free` or `non-free`. Be careful to not confuse with package license which must be put in `LICENSE` file. + +* **maintainer**: informations about the app maintainer. + +* **multi_instance**: this defines your app's ability to be installed multiple times. When YunoHost tries to install a second instance of the app, it will replace the `id` in the scripts by an `id__2`. It means that, if you want to be `multi_instance`, you have to put all the identifiers in the scripts. +

**E.g.** in the roundcube script, database is called `roundcube`, the install directory `roundcube` and the Nginx configuration `roundcube`. This way, the second instance of roundcube will not conflict with the first one, and will be installed in the `roundcube__2` database, in the `roundcube__2`directory, and with the `roundcube__2` Nginx configuration. + +* **arguments**: the settings for the YunoHost's administrator to enter at installation. You have to set a `name` (for argument identification), and a question in `ask` (at least in `en`) that you can translate like the description above. You can also set a `default` value and an `example` to help administrator to fill the input. \ No newline at end of file