mkdit: Yet another cure for your mistyping

mkdit typo

3 min read | by Jordi Prats

It is quite anoying when you keep typing mkdit instead of mkdir for creating a directory just as it is to type sl instead of ls. At least, for sl there's an actual Debian package that, the Steam Locomotive. Having this in mind I created another tool called mkdir:

https://github.com/jordiprats/bash-mkdit

Using this as an example we will configure a github action to build .deb and .rpm packages for this tool.

sl shows you an ASCII steam locomotive crossing your terminal when you mistype it. On the other hand, mkdit shows you an ASCII middle dit (finger) (but it also creates the directory so your productivity is not impacted due to your lack of skills):

$ mkdit aaa ....................../´¯/)  ....................,/¯../  .................../..../  ............./´¯/'...'/´¯¯`·¸  ........../'/.../..../......./¨¯\  ........('(...´...´.... ¯~/'...')  .........\.................'...../  ..........''...\.......... _.·´  ............\..............(  ..............\.............\... 

dit means finger in Catalan, a language spoken on the Catalan Republic, Andorra and some parts France, Spain and even Italy.

We are going to use Github Actions (we could be doing exactly the same using Jenkins) to build this bash script into a packages (deb and rpm) when a new release is created:

  • build job

Here we are telling github when to trigger this job (on release creation):

on:  release:  types: [created] 

Once triggered, the job has several steps:

First, it checkouts the repository itself:

 - uses: actions/checkout@v2 

Created the deb package using the package.yaml file that resides on the repository we have just checked out:

 - uses: kentik/pkg@v1.0.0-rc6  with:  name: mkdit  version: ${{ github.event.release.tag_name }}  arch: amd64  format: deb  package: package.yaml 

Then it uploads the deb file to the release page:

 - name: Upload deb  uses: svenstaro/upload-release-action@v2  with:  repo_token: ${{ secrets.GITHUB_TOKEN }}  file: ./*.deb  tag: ${{ github.ref }}  overwrite: true  body: ""  file_glob: true 

Then we do the same with the rpm package, first we build it:

 - uses: kentik/pkg@v1.0.0-rc6  with:  name: mkdit  version: ${{ github.event.release.tag_name }}  arch: x86_64  format: rpm  package: package.yaml 

Then is attached to the release:

 - name: Upload RPM  uses: svenstaro/upload-release-action@v2  with:  repo_token: ${{ secrets.GITHUB_TOKEN }}  file: ./*.rpm  tag: ${{ github.ref }}  overwrite: true  body: ""  file_glob: true 

Once it is completed we will be able to see both packages uploaded:

  • mkdit releases

Posted on 22/01/2021