Template for a simple Javascript plugin for Impact Framework
if-js-plugin-template
is a custom template which exposes an API for IF to retrieve energy and embodied carbon estimates.
Here can be implementation details of the plugin. For example which API is used, transformations and etc.
To run the <YOUR-CUSTOM-PLUGIN>
, an instance of PluginFactory
must be created. Then, the plugin's execute()
method can be called, passing required arguments to it.
This is how you could run the plugin in JavaScript:
async function runPlugin() {
const usage = await MyCustomPlugin({}).execute([
{
timestamp: '2021-01-01T00:00:00Z',
duration: '15s',
'cpu-util': 34,
},
{
timestamp: '2021-01-01T00:00:15Z',
duration: '15s',
'cpu-util': 12,
},
]);
console.log(usage);
}
runPlugin();
Note: The If Core repository contains the
PluginFactory
interface, utility functions, and a set of error classes that can be fully integrated with the IF framework. Detailed information on each error class can be found in the Errors Reference.
For using locally developed plugin in IF Framework
please follow these steps:
- On the root level of a locally developed plugin run
npm link
, which will create global package. It usespackage.json
file'sname
field as a package name. Additionally name can be checked by runningnpm ls -g --depth=0 --link=true
. - Use the linked plugin in manifest by specifying
name
,method
,path
in initialize plugins section.
name: plugin-demo-link
description: loads plugin
tags: null
initialize:
plugins:
custom-plugin:
method: MyCustomPlugin
path: '<name-field-from-package.json>'
config: ...
You can simply push your plugin to the public Github repository and pass the path to it in your manifest.
For example, for a plugin saved in github.com/my-repo/my-plugin
you can do the following:
npm install your plugin:
npm install -g https://github.com/my-repo/my-plugin
Then, in your manifest
, provide the path in the plugin instantiation. You also need to specify which method the plugin instantiates. In this case you are using the MyCustomPlugin
.
name: plugin-demo-git
description: loads plugin
tags: null
initialize:
plugins:
my-custom-plugin:
method: MyCustomPlugin
path: https://github.com/my-repo/my-plugin
config: ...
Now, when you run the manifest
using the IF CLI, it will load the plugin automatically. Run using:
if-run -m <path-to-your-manifest> -o <path-to-save-output>