D 2018-07-04T01:42:26.267 L depends N text/x-markdown P 0524ccb5218b1412081a7fd2a0fbd82a2b05ebe2e86a0002251c8b3ee84c98db U mario W 1548 ## # 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. * 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. * 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. ## System/language dependencies This is quite informal / not fixated, but non-plugin dependencies might also be listed with `type:name` like: * `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. ## 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:` Z 2559a36555ca987327c107b56167e9f3