Plumbum for shell scripting in Python

I never was a fan of scripting, and unless it was a real edge case, I was always ending up refactoring my needs based on existing tools instead of scripting. Why?

Simply said, because as soon as I finish writing a Bash script, I quickly forget what the mess was about, and if I needed a refactor sometime later, I always end up with too many WTF/m.

image.png

Yes, I realize how cool it is, but in 2022 I prefer to use my mental capacity to make something valuable than deciphering my novice bash skills 🙂

I learned about Babashka , the scripting tool for Clojure developers, a while back. I found it interesting to have the full power of a programming language within your shell scripts. I gave it a try yesterday and found myself some reasons not to pick it up. The reasons are:

  1. Shell outs (using applications in your PATH) are not as smooth as a regular Bash script.
  2. Things we like about shell scripts, like piping, are not as straightforward as they seem. There are thread macros , yet it is not easy to utilize it in every scenario (there are better ways, more Clojure-friendly alternatives).
  3. Clojure itself is a bizarre tool for system administration. Not a bad thing, but I am not much of a Clojure developer “yet.”
  4. Available libraries for system management are not as vast as I know in Python.

Wait a minute, Python? Why not Python? At least it is the second-best citizen on any Unix system nowadays (unlike Babashka, which needs to be installed separately). I once switched to Xonsh some years ago (oh man, it has been six years). I used Python’s subprocess , popen , and sh from time to time, but never was encouraged to switch to it altogether.

Influenced by my questions, I tried to search and found Plumbum . I wouldn’t say I like to showcase by duplicating the excellent documentation. Still, unlike other alternatives, I want to say that it’s trying to solve the right problem in a novel way. There are still some shortcomings, like being an external dependency, meaning the scripts won’t be as plug-and-play as we like them to be, but I thought maybe those kinds of issues could be resolved with some package management.

So I mixed it with Poetry , and my script project was born 😀. I expect to write more about my experience in this area, as I find it interesting. The power of scripting is helpful, but I wonder if we can improve it to catch up with the good practices I like to follow in software development. At least those who contribute have less WTF/day.

Share your thoughts

Pull up a chair and chat with me wherever you’re most comfortable:

  • Matrix - the chatroom for actual humans
  • Hate or trolling - piped straight to /dev/null

Related content