App-Dothe

 view release on metacpan or  search on metacpan

lib/App/Dothe.pm  view on Meta::CPAN

                - /home/yanick/work/blog_entries/**/entry
            foreach: sources
            cmds:
                - task: import
                  vars: { dir: '{{ path($item)->parent }}' }

=head2 C<vars> section

Takes a hash of variable names and values. Those are variables that will be accessible to all
tasks.

E.g.,

    vars:
        entries_file: ./content/_shared/entries.md
        blog_entries_root: /home/yanick/work/blog_entries

=head2 C<tasks> section

Takes a hash of task names and their definitions.

E.g.,

    tasks:

        something:
            sources: [ ./src/foo.source ]
            generates: [ ./dest/foo.dest ]
            foreach: sources
            cmds:
                - ./tools/process_entry.pl {{$item}}

=head3 C<task>

Defines a specific task.

=head4 C<vars>

Hash of variable names and values to be made accessible to the
task and its subtasks.

Variable values can be templates, which have visibility of
previously declared variables.

A locally defined variable will mask the definition of a global
variable.

=head4 C<deps>

Array of task dependencies. If present, Dothe will build the graph
of dependencies (via L<Graph::Directed>) and run them in their
topological order.

    deploy:
        deps: [ clean, build, test ]
        cmds:
            - dzil release

=head4 C<sources>

Array of files. Can take glob patterns that will be expanded using
L<Path::Tiny::Glob>. The result is accessible via the C<sources> variable.

    foo:
        sources: [ './lib/**/*.pm' ]
        foreach: sources
        cmds:
            - perl -c {{$item}}

=head4 C<generates>

Array of files. If C<sources> and C<generates> are both given, the task will
only be run if any of the sources (or the F<Dothe.yml> file itself) has been
modified after the C<generates> files.

Can take glob patterns that will be expanded using
L<Path::Tiny::Glob>. The result is accessible via the C<generates> variable.

=head4 C<foreach>

Takes the name of a variable that must hold an array. If presents,
the C<cmds> will be run for each value of that variable, which will
be accessible via C<$item>.

=head4 C<cmds>

List of shell commands to run. The entries can be templates.
As soon as one command fails, the task aborts.

    deploy:
        vars:
            important_test: ./xt/test.t
        cmds:
            - dzil build
            - perl {{ $important_test }}
            - dzil release

A command can also be a subtask, with potentially some associated variables:

    stuff:
        cmds:
            - task: other_stuff
              vars:
                foo: bar
                baz: quux

=head1 AUTHOR

Yanick Champoux <yanick@babyl.ca>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2019 by Yanick Champoux.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut



( run in 1.875 second using v1.01-cache-2.11-cpan-5b529ec07f3 )