Weekly Journal 10 - asdf, pre-commit, gitlint
I have been working on better ways to manage multiple language environments and enforce team conventions. To that end, I have been experimenting with some new tools. First up is
asdf, a tool for managing multiple versions of scripting language environments like Python and Node.js. To help with checking on team conventions at commit time, I am experimenting with a combination of
pre-commit, for managing git hooks, and
gitlint, which adds linting rules for commit messages.
asdf is a version management tool for a variety of languages and utilities. I am using it to install multiple versions of Python and Node.js for work and personal projects, but it also supports a number of popular utilities like awscli, direnv, jq, and many others. So far it has been working very well for my Python projects. I can have multiple versions of Python installed simultaneously, it works with virtual environments, and even allows access to Python tools I have installed with the system Python environment.
I was pleasantly surprised to discover I can create a Python virtual environment using a version managed by asdf. This allows me to install packages local to each project without causing dependency issues. I really like the fact asdf supports multiple languages and tools, so I do not have install and use a different tool for each language.
gitlint is a Python-based linter for git commit messages. There is a pre-commit plugin for it available, so it is easy to use with the other tools I have been looking at. The purpose of gitlint is to ensure commit messages are written in a consistent format and with consistent information. In my case, we have been looking at adopting Conventional Commits at work. Using gitlint would make sure we all remember to follow the conventions by causing the commit to fail. This is more useful for teams versus individual projects, but if you really like having consistent commit messages it can help.
This week it looks like I will be focusing on AWS security. Depending on how far I get, I should have some notes to share on AWS Config and Security Hub next week.