singularity: Index | Files | Directories

package plugin

import ""


Package Files

manifest.go plugin.go


const PluginRootDirSymbol = "PluginRootDir"

PluginRootDirSymbol is the name of a variable of type string which a plugin may define if it want to obtain the plugin root directory. Concatenated with the manifest name it allows to retrieve the path where the plugin is currently installed.

const PluginSymbol = "Plugin"

PluginSymbol is the name of a variable of type plugin.Plugin which all plugin implementations MUST define.

type Callback Uses

type Callback interface{}

Callback defines a plugin callback. Available callbacks are defined in pkg/plugin/callback.

type Manifest Uses

type Manifest struct {
    // Name is, by convention, a fully-qualified domain name which uniquely identifies a plugin.
    // This convention is not enforced, but rather is best practice.
    // Good Names:
    //     -
    //     -
    // Bad Names:
    //     - test-plugin
    Name string `json:"name"`
    // Author of the plugin.
    Author string `json:"author"`
    // Version describes the SemVer of the plugin.
    Version string `json:"version"`
    // Description describes the plugin.
    Description string `json:"description"`

Manifest is the plugin manifest, stored as a data object in the plugin SIF.

type Plugin Uses

type Plugin struct {
    // Manifest contains the plugin manifest holding
    // basic information about the plugin.
    // Callbacks contains plugin callbacks to be called
    // by Singularity.
    Callbacks []Callback
    // Install is a function called during singularity
    // plugin install, the function take the directory
    // where plugin object will reside and can be used
    // to store configuration files/datas needed by a
    // plugin.
    Install func(string) error

Plugin is the "meta-type" which encompasses the plugins implementation through Callbacks and a Manifest (potentially more to be added). The plugin implementation must have an exported symbol named "Plugin" of this type.

An example of how this will look from the plugin main package:

    package main

    import (
            clicallback ""
	           pluginapi ""

    var Plugin = pluginapi.Plugin{
            Manifest: pluginapi.Manifest{
                    Name:        "PluginExample",
                    Author:      "Sylabs Team",
                    Version:     "v0.0.1",
                    Description: "This is an example plugin",
            Callbacks: []pluginapi.Callback{

    func callbackRegisterCmd(manager *cmdline.CommandManager) {
            // Do command registration



Package plugin is imported by 4 packages. Updated 2020-02-26. Refresh now. Tools for package owners.