package
4.3.0-rc.1
Repository: https://github.com/sylabs/singularity.git
Documentation: pkg.go.dev

# README

Singularity example plugin

This directory contains an example CLI plugin for singularity. It demonstrates how to add a command and flags.

Building

In order to build the plugin you need a copy of code matching the version of singularity that you wish to use. You can find the commit matching the singularity binary by running:

$ singularity version
3.1.1-723.g7998470e7

this means this version of singularity is post 3.1.1 (but before the next version after that one). The suffix .gXXXXXXXXX indicates the exact commit in github.com/sylabs/singularity used to build this binary (7998470e7 in this example).

Obtain a copy of the source code by running:

git clone https://github.com/sylabs/singularity.git
cd singularity
git checkout 7998470e7

Still from within that directory, run:

singularity plugin compile ./examples/plugins/cli-plugin

This will produce a file ./examples/plugins/cli-plugin/cli-plugin.sif.

Currently there's a limitation regarding the location of the plugin code: it must reside somewhere inside the singularity source code tree.

Installing

Once you have compiled the plugin into a SIF file, you can install it into the correct singularity directory using the command:

singularity plugin install ./examples/plugins/cli-plugin/cli-plugin.sif

Singularity will automatically load the plugin code from now on.

Other commands

You can query the list of installed plugins:

$ singularity plugin list
ENABLED  NAME
    yes  sylabs.io/cli-plugin

Disable an installed plugin:

singularity plugin disable sylabs.io/cli-plugin

Enable a disabled plugin:

singularity plugin enable sylabs.io/cli-plugin

Uninstall an installed plugin:

singularity plugin uninstall sylabs.io/cli-plugin

And inspect a SIF file before installing:

$ singularity plugin inspect examples/plugins/cli-plugin/cli-plugin.sif
Name: sylabs.io/cli-plugin
Description: This is a short test CLI plugin for Singularity
Author: Sylabs Team
Version: 0.1.0

# Variables

Plugin is the only variable which a plugin MUST export.