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:

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:


Posted on 22/01/2021