= 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.