summaryrefslogtreecommitdiff
path: root/src/_slides/perl6-using-app-assixt-to-improve-module-development.md
diff options
context:
space:
mode:
Diffstat (limited to 'src/_slides/perl6-using-app-assixt-to-improve-module-development.md')
-rw-r--r--src/_slides/perl6-using-app-assixt-to-improve-module-development.md244
1 files changed, 244 insertions, 0 deletions
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
+