fbp-manifest
Advanced tools
Comparing version 0.1.1 to 0.1.2
require('coffee-script/register'); | ||
exports.list = require('./src/list'); | ||
exports.load = require('./src/load'); | ||
exports.stats = require('./src/stats'); | ||
exports.validate = require('./src/validate'); | ||
exports.dependencies = require('./src/dependencies'); |
{ | ||
"name": "fbp-manifest", | ||
"version": "0.1.1", | ||
"version": "0.1.2", | ||
"description": "Flow-Based Programming Manifest tools", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -10,3 +10,3 @@ Flow-Based Programming Manifest Tools | ||
Prototyping | ||
Early stages | ||
@@ -16,2 +16,3 @@ ## Tools | ||
* `fbp-manifest-list`: Discover available components and list them | ||
* `fbp-manifest-deps`: Produce a manifest consisting only of dependencies of a given component | ||
* `fbp-manifest-stats`: Show component reuse statistics for a project | ||
@@ -29,2 +30,51 @@ * `fbp-manifest-validate`: Validate a FBP manifest file against the schema | ||
## Manifest structure | ||
FBP manifests consist of the following information: | ||
* `version`: version of the manifest specification, currently `1` | ||
* `modules`: array of module definitions | ||
* `main`: (optional) main component definition for running the project | ||
The modules are objects with the following: | ||
* `name`: name of the module | ||
* `runtime`: runtime the module is for, for example `noflo-nodejs` | ||
* `base`: base directory path of the module, relative to project root | ||
* `components`: array of components contained in the module | ||
* `description`: (optional) human-readable description for the module | ||
* `icon`: (optional) default icon for components of the module, following [Font Awesome](http://fontawesome.io/icons/) naming conventions | ||
Modules supporting multiple runtimes can appear multiple times in a manifest, once per each supported runtime. For example a NoFlo module that has some common components, and specific components for Node.js and browsers may have three entries with specific runtimes: `noflo`, `noflo-nodejs`, and `noflo-browser`. A manifest can contain modules for an arbitrary number of different runtimes. | ||
Components are objects with the following: | ||
* `name`: name of the component | ||
* `path`: path used for executing the component. For example a Node.js require path or Java class path | ||
* `exec`: command used for starting an instance of the component for components that are standalone processes | ||
* `elementary`: boolean on whether the component is elementary (code) or not (graph) | ||
* `source`: (optional) path to the source code of the component | ||
* `inports`: (optional) array of inport definitions for the component | ||
* `outports`: (optional) array of outport definitions for the component | ||
Each component needs to provide at minimum the information the runtime needs to run it. Additionally it can provide metadata usable for flow-based programming tools like a ports listing. Either `path` or `exec` needs to be provided. | ||
The full manifest structure can be found in the [schema](https://github.com/flowbased/fbp-manifest/tree/master/schemata). Manifest files can be validated against the JSON schema or with the `fbp-manifest-validate` tool. | ||
### Extending | ||
It is possible to extend the manifest files with custom runtime-specific information. To do this, place the custom values under a key named after the runtime they're for. So, for example NoFlo's custom information about a component would go under a `noflo` key: | ||
```json | ||
{ | ||
"name": "Merge", | ||
"path": "components/Merge.js", | ||
"source": "components/Merge.coffee", | ||
"elementary": true, | ||
"noflo": { | ||
"async": false | ||
} | ||
} | ||
``` | ||
## Background | ||
@@ -31,0 +81,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Trivial Package
Supply chain riskPackages less than 10 lines of code are easily copied into your own project and may not warrant the additional supply chain risk of an external dependency.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Trivial Package
Supply chain riskPackages less than 10 lines of code are easily copied into your own project and may not warrant the additional supply chain risk of an external dependency.
Found 1 instance in 1 package
35370
6
82