= App::Cpan6 :toc: preamble `App::Cpan6` is a tool to assist in creating and sharing https://www.cpan.org/[CPAN] modules. == Features To do it's job, `cpan6` 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`, `cpan6` will try to install the module as well through `zef`. Regardless of the `--skip-install` value, `cpan6` 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. Cpan6 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, `cpan6` 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 `cpan6`. Valid types are - `class`, which will add an empty class with the correct name - `unit`, which will add a unit module name === upload Upload module tarballs to PAUSE. This will ask you to enter your PAUSE ID and password. It will ask to save your PAUSE ID, so you wont have to enter it next time. == Roadmap - Add `push` command to release a new version of a module, and upload it to PAUSE - Make `new` also write a `.travis.yml` - Add tests - Clean up the codebase - Release v1.0.0 == License `App::Cpan6` is released under the GNU GPL, version 3 or later.