= App::Bob
:toc: preamble

`App::Bob` is a tool to assist in creating and sharing
https://www.cpan.org/[CPAN] modules.

== Features
To do it's job, `bob` has a couple of tools ready for you. Use any of the
following subcommands to use them.

=== depend
Indicate your module depends on another module. Unless disabled with
`--skip-install`, `bob` will try to install the module as well through `zef`.
Regardless of the `--skip-install` value, `bob` will update your `META6.json`
with the new dependency as well.

=== dist
`dist` creates a `.tar.gz` file you can upload to
https://pause.perl.org/[PAUSE].

=== new
Create a new module in the current directory. Bob will ask you some questions,
and continue to perform the following steps:

- Create module directory skeleton
- Write `META6.json`
- Write `.editorconfig`
- If the `git` flag is enabled (which it is by default):
  - Initialize a git repository
  - Make an initial commit

=== pkg
The `pkg` command allows you to easily create packages for distributions. For
each type of package, there's a different subcommand.

==== ebuild
To create `ebuild` files, used by Gentoo and derivatives, you can make use of
the `ebuild` subcommand to `package`.

=== release
Create a new release for a module. This will bump the version number in
`META6.json`, commit it into git and create a tag with the version number.

=== touch
Using `touch` requires a subcommand. It will create a template file for your
module in the correct location, and update the `provides` key of your
`META6.json` as well.

==== bin
Create a new perl 6 script in the `bin` directory. The template will include a
shebang, version indicator and a `sub MAIN` to get you started.

==== lib
Create a new perl 6 module file in the `lib` directory. If subdirectories need
to be made, `bob` will take care of it. The template by default contains a
shebang and a version indicator. You can get an extended template by supplying
a `--type` argument to `bob`. Valid types are

- `class`, which will add an empty class with the correct name
- `unit`, which will add a unit module name

== Roadmap
- Add `upload` command to upload a given `.tar.gz` distribution to PAUSE
- Add `push` command to release a new version of a module, and upload it to PAUSE
- Make `new` also write a `.travis.yml`

== License
`App::Bob` is released under the GNU GPL, version 3 or later.
