cs-3424: finish assignment 1

This commit is contained in:
Price Hiller 2024-06-30 22:52:33 -05:00
parent 2e6f6d5a2e
commit 35f757da77
Signed by: Price
GPG Key ID: C3FADDE7A8534BEB

View File

@ -0,0 +1,33 @@
* Assignment 1 - CS 3424
Name: Price Hiller
ABC123: zfp106
Course: CS 3424, Summer 2024
The source code for this assignment can be located at [[https://git.orion-technologies.io/Price/college/src/branch/Development/Summer-2024/CS-3424/Assignments/Assignment-1]]
** Some Notes
Many of these files are dependent on one another. For instance, the ~create.bash~ file actually
/doesn't/ have built-in capability to create anything on its own. You'll notice how bare bones it
is — this is because it is actually wrapping ~update.bash~ which handles creating and updating
files. You'll notice something similar going on with the ~enroll.bash~ script as well, which is just
wrapping ~update.bash~.
To handle state across files, the ~read.bash~ script is using an associative array to store values
in a global for the current file context. Very ~C~ style. By reading out of this array we can
maintain better create/read/update management across the files.
Likewise, you'll notice a distinct lack of ~echo~ command usage. I instead opt for ~printf~ which is
better practice and ~cat~ with =heredocs= to output into files.
You'll also notice a ~err~ and ~log~ function that are used all over the place, with the intent
being that ~assign1.bash~ is the entry point for this program. Attempting to use any script in
isolation without ~assign1.bash~ will likely fail in unexpected ways.
Another thing to note is at the top of each script I define ~set -eEuo pipefail~ which avoids all
sorts of pitfalls when bash scripting, like early exits on failure, failing pipelines, checking
unassigned variables, and more.
Last thing, I do *not* use the ~source~ command, instead using the better POSIX standard ~.~ to
source the various scripts within the assignment.