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> [![endorse](http://api.coderwall.com/yanick/endorsecount.png)](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 )