Skip to content
/ vib-plugin Public template

A template repository to make the creation of vib plugins easier

Notifications You must be signed in to change notification settings

Vanilla-OS/vib-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vib-plugin

A template to create plugins for vib

Usage

To use this template, fork it and change the module name in go.mod.

Then you can modify the source in src/plugin.go to create your plugin.

A couple of test cases should also be added in src/plugin_test.go, view vib-fsguard and vib-pacman for examples.

We recommend adding the vib-plugin tag to your repo so other people can discover it.

Plugin requirements

src/plugin.go explains all requirements for plugins with code examples.

A short tldr:

  • vib requires BuildModule(moduleInterface *C.char, recipeInterface *C.char) *C.char to be available as it is used as the entry point for the plugin. Any other functions can be freely declared and will not be used by vib
  • plugins need to pass their name and plugin type through the PlugInfo() *C.Char function, the api contains a struct of api.PluginInfo which makes this easier, vib expects this function to return a json marshalled version of this struct
  • Each plugin needs to have a custom struct for the module, with at least two mandatory values: Name string and Type string
  • It is recommended, but not required, to use the api functions for source definition or downloading sources

Building

Plugins can be built with go build -buildmode=c-shared -o plugin.so, producing a .so file. To use the plugin, the .so file has to be moved into the plugins/ directory of the vib recipe. Plugins are only loaded when required, if a recipe never uses a plugin example, example.so will never be loaded.

This template contains a GitHub workflow that can build the plugin with the right arguments automatically.

About

A template repository to make the creation of vib plugins easier

Topics

Resources

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages