10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
|
* The recommended field name is "depends" and not "require" - for compatibility with the Debian packaging spec, and because it sounds less stringent.
* Not every application would want to enforce this *strictly*. Because dynamic languages can soft-detect dependencies usually.
* Within a plugin management UI, the depends: list could be used for installation warnings.
## Versioned dependencies
Additionally the plugin names can be suffixed with a version comparison:
# depends: core (>= 2.0.0)
Which obviously does require the plugin manager to be somewhat more involved. You'll often get away just implementing a `>=` check. Most other version expression gimmicks are likely overkill for simple applicatiion-level features.
## System/language dependencies
While a `TYPE:name` entry can reference other scopes (instead of application-local plugins)
| `bin:imagemagick` | for binaries |
| `python:lxml` | for language modules |
| `sys:amd64` | for the architecture. |
| `deb:anacron` | as hint for the system package manager. |
| `api:archnemesis` | see [api](wiki/api) ]
This is quite informal still. There's also less practical value to implement theese complex dependency lookups, or these exact ones. This is just the advised syntax.
## Versioned dependencies
Additionally the plugin names can be suffixed with a version comparison:
# depends: core (>= 2.0.0)
Which obviously does require the plugin manager to be somewhat more involved. You'll often get away just implementing `>=` check of course. Most other version expression gimmicks are usually overkill for simple applicatiion-level features.
## Related fields
Depending on complexity other fields might be used alongside:
* `# provides:`
* `# conflicts:`
* `# suggests:`
|