The csval Tool

Preamble

Okay, so I didn’t actually end up doing a data science project first as I said in my first post 😅. However, I have been working on a smaller project to solve a problem I noticed during my development process.

First, a little story about the issue. While transferring from Ubuntu how I noticed issue over to Manjaro Linux, I wanted to get some experience with manually building applications by pulling the application repos from the Arch User Repository (AUR). If you don’t know, Arch Linux is a Linux distribution that’s geared well for software devs and Manjaro Linux is an Arch-based distribution which has additional features which make the user experience more streamlined. After trying a number of different Linux distros, I foudn that this Manjaro + the KDE Plasma desktop environment is the best fit for me. ANY WAY, I noticed during the building process that it was cumbersome to compare checksums for files that I downloaded. I wanted to solve this issue by creating a simple CLI tool which can tell me if the checksum for the file I downloaded matches the checksum I obtained.

Thus, csval is born! It can be found as a public repository on GitHub here. Start Hugo’s development server to see your changes, remembering to include draft content.

About csval


an image of the csval github repo

csval is built using Rust, as I’ve wanted to learn some Rust to build my low-level language skills. I’ve most commonly used Python (which is an interpreted), but I wanted to get some experience with an ahead-of-time compiled language like Rust. Building this tool also allowed me the opportunity to understand how I can create Makefiles for automating the building and installing process. The building process is dependent on the cargo toolchain from the Rust website, and the standard UNIX make tool.

Right now, csval has the ability to check both Md5 sums and SHA256 sums. There’s an example provided on the GitHub page on how to use this functionality.

Note that I’ve released this package under the GPLv3 license, so feel free to fork it and modify it for your own purposes within the allowed use cases detailed in the license. However, this is not supposed to be a maintained tool or program, so I’m not accepting contributions.

What did I learn?

First of all, I’m getting a better idea of Rust’s syntax and passing references to objects. I’ve learned the basics of implementing build automation tools to make it easy for others to build my project. And finally, I’m getting the hand of using git and GitHub for version control.

Anyway, thank you for your time. Bye!

 

Zara Foo

A mix and mash of my personal and contributed projects!


2024-12-29