nf-plugin-template is a gradle template to create Nextflow plugins
You can grab the template from:
Features
-
minimal changes
-
simple structure, oriented to a single plugin
-
gradle 8.4
-
custom Gradle tasks included
-
ready to publish GitHub releases
-
asciidoctor documentation + GitHub Pages
Changes
This is a fork of the original jagedn/nf-plugin-template repository. In case you’re using original repo this new repo contains:
-
use gradle.properties to configure required variables
-
publish releases using JReleaser
Steps
-
Create a new Github project using this template
-
Clone in a directory with the name of your new plugin, i.e.
nf-my-awesome-plugin -
configure all details about your project:
publish_description = An unofficial template to build Nextflow Plugins publish_url = https://github.com/edn-es/nf-plugin-template publish_year = 2023 publish_developer = jagedn publish_developerName = Jorge Aguilera publish_git = scm:git:https://github.com/edn-es/nf-plugin-template.git publish_repoOwner = edn-es
-
add your dependencies. For example, add apache poi libs from mavenCentral
dependencies {
// add your dependencies, for example:
implementation 'org.apache.poi:poi:5.2.4'
implementation 'org.apache.poi:poi-ooxml:5.2.4'
}
-
rename
src/main/groovy/com/nextflow/plugindirectory andExamplePlugin.groovyfile with the package and name of your plugin -
rename ExamplePlugin with a better name (for example
MyAwesomePlugin) -
delete/rename/update the
ExampleFunctions.groovywith your extension
You don’t need to create the extensions points file (src/main/resources/META-INF/extensions.idx)
as registerIdx task will scan your sources and build it
and this is all, you can run for example ./gradlew jsonPlugin to generate Nextflow’s artifacts
Configuration
This template includes an ExampleConfiguration to show you how to make your plugin configurable
Test
You can/need to create as many tests you consider. This template includes a full example running a pipeline and checking the result
Tasks
- INFO
-
You can find new gradle tasks in
nextflowgroup-
generateIdx, scan sources and generate theextensions.idxresource -
zipPlugin, compile and package your plugin in a zip file ready to be used by Nextflow -
unzipPlugin, extract the zip file into your $HOME/.nextflow/plugins so you can use it in pipelines -
jsonPlugin, create the json spec required by nextflow to publish a plugin
-
A typical scenario can be, once you’ve created/implemented some logic in your plugin, you’ve created some test
but want to see in action in a pipeline. You can run the unzipPlugin task, and it will install the plugin into
your $HOME/.nextflow/plugin directory
Or you can run the pipeline using the NXF_PLUGINS_TEST_REPOSITORY env with your build/plugins directory
Documentation
This template include asciidoctor gradle plugin to generate documentation.
You can write your documentation at src/docs/asciidoc and run ./gradlew asciidoctor to build it
at build/doc directory.
Remember to prepare your GitHub repository with GH Pages (go to Settings, Pages and select GitHub Actions as source) and your documentation will be published automagically
Release
This template uses JReleaser to publish releases in GitHub (publish in MavenCentral soon). Also you can use
the release GitHub action to run it (it only requires you specify which version are you deploying)