nextflow restful api examplehttps://github.com/nextflow-io/nf-tweet/blob/master/plugins/nf-tweet/src/main/nextflow/tweet/TweetExtension.groovy
./nextflow plugin install nf-hello
gitpod ~/.nextflow/plugins $ tree . . └── nf-hello-0.3.0 ├── classes │ ├── META-INF │ │ ├── extensions.idx │ │ └── MANIFEST.MF │ └── nextflow │ └── hello │ ├── HelloExtension$_goodbye_closure2.class │ ├── HelloExtension$_goodbye_closure3.class │ ├── HelloExtension$_randomString_closure4$_closure5.class │ ├── HelloExtension$_randomString_closure4.class │ ├── HelloExtension$_reverse_closure1.class │ ├── HelloExtension.class │ ├── HelloFactory.class │ ├── HelloObserver.class │ └── HelloPlugin.class └── META-INF └── MANIFEST.MF
gitpod ~/.nextflow/plugins/nf-sqldb-0.5.0 (master) $ tree . . ├── classes │ ├── META-INF │ │ ├── extensions.idx │ │ └── MANIFEST.MF │ └── nextflow │ └── sql │ ├── ChannelSqlExtension$_dataSourceFromOpts_closure2.class │ ├── ChannelSqlExtension$_queryToChannel_closure1.class │ ├── ChannelSqlExtension$_sqlInsert_closure3.class │ ├── ChannelSqlExtension$_sqlInsert_closure4.class │ ├── ChannelSqlExtension.class │ ├── config │ │ ├── SqlConfig.class │ │ └── SqlDataSource.class │ ├── InsertHandler$_closure1.class │ ├── InsertHandler$_cols0_closure2.class │ ├── InsertHandler$_fetchColNames1_closure5.class │ ├── InsertHandler$_performAsMap_closure3.class │ ├── InsertHandler$_performAsTuple_closure4.class │ ├── InsertHandler.class │ ├── QueryHandler$_queryAsync_closure1.class │ ├── QueryHandler.class │ ├── QueryOp.class │ └── SqlPlugin.class ├── lib │ ├── AthenaJDBC42_2.0.25.1001.jar │ ├── checker-qual-3.5.0.jar │ ├── duckdb_jdbc-0.3.0.jar │ ├── groovy-sql-3.0.10.jar │ ├── h2-1.4.200.jar │ ├── mariadb-java-client-2.7.0.jar │ ├── mysql-connector-java-8.0.22.jar │ ├── postgresql-42.2.23.jar │ ├── protobuf-java-3.11.4.jar │ └── sqlite-jdbc-3.36.0.3.jar └── META-INF └── MANIFEST.MF
./nextflow run main.nf -plugins nf-hello
#!/usr/bin/env nextflow nextflow.enable.dsl=2 process sayHello { input: val x output: path("${x}.txt") script: """ sleep 1 echo '$x world!' > ${x}.txt """ } println params.input include { randomString } from 'plugin/nf-hello' workflow { Channel.of('Bonjour', 'Ciao', 'Hello', 'Hola') | sayHello println(randomString(5)) }
import nextflow.executor.Executor import nextflow.util.ServiceName import org.pf4j.ExtensionPoint @ServiceName('my-executor') class MyExecutor extends Executor implements ExtensionPoint { // ... }
process foo { executor 'my-executor' }