App-Dothe
view release on metacpan or search on metacpan
README.mkdn view on Meta::CPAN
## `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
```
## `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}}
```
### `task`
Defines a specific task.
#### `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.
#### `deps`
Array of task dependencies. If present, Dothe will build the graph
of dependencies (via [Graph::Directed](https://metacpan.org/pod/Graph::Directed)) and run them in their
topological order.
```
deploy:
deps: [ clean, build, test ]
cmds:
- dzil release
```
#### `sources`
Array of files. Can take glob patterns that will be expanded using
[Path::Tiny::Glob](https://metacpan.org/pod/Path::Tiny::Glob). The result is accessible via the `sources` variable.
```
foo:
sources: [ './lib/**/*.pm' ]
foreach: sources
cmds:
- perl -c {{$item}}
```
#### `generates`
Array of files. If `sources` and `generates` are both given, the task will
only be run if any of the sources (or the `Dothe.yml` file itself) has been
modified after the `generates` files.
Can take glob patterns that will be expanded using
[Path::Tiny::Glob](https://metacpan.org/pod/Path::Tiny::Glob). The result is accessible via the `generates` variable.
#### `foreach`
Takes the name of a variable that must hold an array. If presents,
the `cmds` will be run for each value of that variable, which will
be accessible via `$item`.
#### `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
```
# AUTHOR
Yanick Champoux <yanick@babyl.ca> [](http://coderwall.com/yanick)
# 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.
( run in 1.214 second using v1.01-cache-2.11-cpan-97f6503c9c8 )