Skip to content

Latest commit

 

History

History
48 lines (23 loc) · 931 Bytes

modules.md

File metadata and controls

48 lines (23 loc) · 931 Bytes

Sparrow6 modules

Sparrow6 modules allow to write portable Sparrow6 scenarios distributed as Raku modules:

#!raku 

use v6;

unit module Sparrow6::Nginx;

use Sparrow6::DSL;

our sub tasks (%args) {

  package-generic "nginx";

  service-enable "nginx";

  service-start "nginx";

}

To use module call in Sparrow6 scenario module_run function:

module_run 'Nginx';

You may pass parameters to a Sparrow6 module:

module_run 'Nginx', port => 80;

In module's definition parameters are available through %args Hash:

our sub tasks (%args) {

    say %args<port>;

}

Sparrow6 module is a standard zef module, but inside Sparrow6 scenario it is being called by shorter name:

Sparrow6::Foo::Bar ---> module_run Foo::Bar

In other words module_run($ModuleName) function loads module Sparrow6::$ModuleName at runtime and calls module's function tasks.