From 70a2c42a5eef1dab2b7ab75e3c7f6ffc8c8c1959 Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Fri, 5 Feb 2021 09:55:25 +0100 Subject: Move source files into src --- ...ing-app-assixt-to-improve-module-development.md | 244 +++++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100644 src/_slides/perl6-using-app-assixt-to-improve-module-development.md (limited to 'src/_slides/perl6-using-app-assixt-to-improve-module-development.md') diff --git a/src/_slides/perl6-using-app-assixt-to-improve-module-development.md b/src/_slides/perl6-using-app-assixt-to-improve-module-development.md new file mode 100644 index 0000000..b16c979 --- /dev/null +++ b/src/_slides/perl6-using-app-assixt-to-improve-module-development.md @@ -0,0 +1,244 @@ +--- +title: "Perl6: Using `App::Assixt` to improve module development" +event: 14th Dutch Perl Workshop +date: 2018-07-07 +--- + +# `App::Assixt` +## Improving module development + +--- + +# About me + +- Patrick Spek (`TYIL`) +- https://www.tyil.nl +- @tyil@mastodon.social + +note: + I have about 10 Perl 6 modules available on CPAN right now. `Config` and + parser modules, `IRC::Client` plugins, `Hash::Merge`, `Dist::Helper` and + `App::Assixt`. + +--- + +# Why? + +- Manually updating JSON is annoying +- Wanted to ease development +- Wanted easier way to distribute + +note: + It's my 2nd project in Perl 6, following `Config`. + +--- + +# How? + +- Uses `Dist::Helper` +- Updates `META6.json` +- Creates skeleton files + +note: + `Dist::Helper` is the base that deals with the actual interaction with the + modules. `App::Assixt` is a CLI frontend with some nice extras to make it + usable. + +--- + +# How do I get it? + +``` +$ zef install App::Assixt +``` + +note: + `App::Assixt` is easily available through `CPAN`, and `zef` is able to + install it cleanly nowadays. + +--- + +# Using it + +``` +$ assixt help +``` + +``` +$ p6man assixt +``` + +note: + - p6man is shipped with `Pod::To::Pager`, still in development! + +--- + +# Creating a new project + +## Manual +``` +$ mkdir my-new-perl6-project +$ cp my-old-project/META6.json my-new-perl6-project/. +$ $EDITOR my-new-perl6-project/META6.json +``` + +## `assixt` +``` +$ assixt new --name=my-new-perl6-project +``` + +note: + - `assixt new` can also be done without arguments, it will ask for a name + then + - additional questions will also be asked to fill out the META6.json + - `assixt` will add gitlab-ci, travis configuration + - default changelog + - gitignore + +--- + +# Adding files + +## Manual +``` +$ mkdir -p lib/App/Local +$ touch lib/App/Local/NewClass.pm6 +$ $EDITOR META6.json +``` + +## `assixt` +``` +$ assixt touch class App::Local::NewClass +``` + +- Classes +- Tests +- Unit modules + +--- + +# Adding a dependency + +## Manual +``` +$ $EDITOR META6.json +$ zef install Config +``` + +## `assixt` +``` +$ assixt depend Config +``` + +note: + `--no-install` skips the step where `zef` tries to install the module. + +--- + +# Bumping the version + +## Manual +``` +$ $EDITOR META6.json +``` + +## `assixt` +``` +$ assixt bump +``` + +note: + - `bump` asks for additional user input to decide whether to bump the patch, + minor or major level. + - In a next release, will also update `=VERSION` in pod, and CHANGELOG + releases. + +--- + +# Create a new dist + +## Manual +``` +$ tar czf My-Dist-0.1.2.tar.gz --exclude-vcs-ignores [--exclude...] . +$ mv !:2 ~/.local/dists/. +``` + +## `assixt` +``` +$ assixt dist +``` + +--- + +# Uploading to CPAN + +## Manual +Through your favourite webbrowser + +## `assixt` +``` +$ assixt upload ~/.local/var/assixt/dists/Dist-Helper-0.19.0.tar.gz +``` + +note: + After starting development and testing of `assixt`, I eventually found `mi6`, + but I stick to `assixt` as it can do much more. + +--- + +# `push` shorthand + +``` +$ assixt push +``` + +- Bump +- Dist +- Upload + +note: + Does a `bump`, `dist` and `upload`, one after another. + +--- + +# Workflow + +``` +$ assixt new Local::App +$ cd perl6-local-app +$ assixt depend Config +$ assixt touch class Local::App::Foo +$ $EDITOR +$ assixt push +``` + +note: + Creates a new module directory, make the module depend on `Config`, create a + class named `Local::App::Foo` and push the module to CPAN. + +--- + +# Future plans + +--- + +## QA check +- Will perform QA checks to improve module quality +- Based on `Release::Checklist` by [Tux] +- Work In Progress on Github + +--- + +## Other ideas +- `meta`: To update misc dist info, such as the authors +- `sync-meta`: To synchronize a `META6.json` from an existing module +- Improve `new`: Also generate a default `README.pod6` + +note: + `sync-meta` is intended to also create a new `META6.json` if none exists + yet. + +--- + +# Questions + -- cgit v1.1