Writing the basic implementation
Before we jump right into writing code, let's take a minute to plan out what our code needs to do exactly. The goal for our CLI is to create a program that allows using YAML with jq. Ultimately, this boils down to three requirements:
- Transform the input YAML data into JSON.
- Pass the transformed data to jq.
- Transform the output JSON data into YAML.
It is important to keep in mind that the end goal of this exercise is to demonstrate how various Crystal concepts can be applied to create a functional and usable CLI application. As such, we're not going to focus too much on trying to make it 100% robust for every use case, but instead, focus more on the various tools/concepts used as part of the implementation.
With that in mind, let's move on to writing the initial implementation, starting with something simple and iterating on it until we have a complete working implementation. Let's start with the simplest...