singularity: github.com/sylabs/singularity/pkg/plugin Index | Files | Directories

package plugin

import "github.com/sylabs/singularity/pkg/plugin"

Index

Package Files

manifest.go plugin.go

Constants

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:
    //     - sylabs.io/test-plugin
    //     - github.com/user/repo
    //
    // 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.
    Manifest
    // 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 "github.com/sylabs/singularity/pkg/callback/cli"
	           pluginapi "github.com/sylabs/singularity/pkg/plugin"
    )

    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{
				       (clicallback.Command)(callbackRegisterCmd),
            },
    }

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

Directories

PathSynopsis
callback/cli

Package plugin is imported by 2 packages. Updated 2020-01-24. Refresh now. Tools for package owners.