Changes to "depends" between 2018-07-04 01:42:26 and 2018-07-04 13:27:27

1
2
3
4
5
6
7

8
9
10
11

12

13


14
15
16
17
18

19
20
21
22
23
24







25
26
27
28
29
30
31
1
2
3
4
5
6

7
8
9
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






-
+



-
+

+
-
+
+




-
+

-
-
-
-
-
+
+
+
+
+
+
+







## # depends:

Lists other plugins or language/system libraries which the current plugin requires:

    # depends: corefuncs, json_io, bin:bash

Typically it just lists other plugin basenames. And it's a strong indicator that those must be enabled alongside or prior.
Typically it just lists other plugin basenames. To indicate which must be available/active alongside.

  * It's a list of local URNs.

  * The recommended field name is "depends" and not "require", for compatibility with the Debian packaging spec, and because it sounds less stringent.
  * 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.
  * Not every application would want to enforce it *strictly*. It can be more of a recommendation and user-visible field. In dynamic langauges plugins can soft-detect missing dependencies mostly.

  * Within a plugin management UI, the depends: list could be used for installation warnings. 


## System/language dependencies

This is quite informal / not fixated, but non-plugin dependencies might also be listed with `type:name` like:
While a `TYPE:name` entry can reference other scopes (instead of application-local plugins)

  * `bin:imagemagick` for binaries
  * `python:lyxml` for language modules
  * Or `sys:amd64` for the architecture.
  * And `deb:anacron` for the system package manager.
  * `api:archnemesis` etc.
| `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)