utilise carg-parse for better arg parsing

This commit is contained in:
AUnicornWithNoLife 2023-05-11 18:19:56 +01:00
parent 6dfce8b413
commit d75c172461
4 changed files with 48 additions and 35 deletions

3
.gitmodules vendored
View File

@ -1,3 +1,6 @@
[submodule "font8x8"]
path = font8x8
url = https://github.com/dhepper/font8x8.git
[submodule "carg-parse"]
path = carg-parse
url = http://github.com/AUnicornWithNoLife/carg-parse.git

1
carg-parse Submodule

@ -0,0 +1 @@
Subproject commit 01a42d665640712f96cdaa75b9bd672b8d2510e3

45
main.c
View File

@ -4,6 +4,7 @@
#include <stdbool.h>
#include <string.h>
#include "font8x8/font8x8.h"
#include "carg-parse/carg-parse.h"
#define SIZE 8
@ -47,36 +48,44 @@ void stringToFont(char* input, int width, char output[SIZE][width])
}
}
int main (int argc, char** argv) // argument layout "'./Big Letter' 'INPUT TEXT' 'OPTIONAL TRUE CHARACTER' 'OPTIONAL FALSE CHARACTER' 'OPTIONAL v FOR VERBOSE"
int main (int argc, char** argv) // argument layout "'./Big Letter' 'INPUT TEXT' -trueC 'OPTIONAL TRUE CHARACTER' -falseC 'OPTIONAL FALSE CHARACTER' -v (optional VERBOSE flag)
{
if (argc < 2) // requires one argument
{
printf("not enough arguments provided");
return -1;
}
carg_parse_data* args = carg_parse(argc, argv);
if (argc >= 3) // if last argument is 'v' enable verbose
for (int i = 0; i < args->lv_len; i++)
{
if (argv[argc - 1][0] == 'v')
if (!strcmp(args->lv_labels[i], "v"))
{
verbose = true;
printf("VERBOSE enabled \n");
printf("VERBOSE ENABLED");
}
}
if (argc >= 4) // replace true and false chars if present in arguments
{
trueChar = argv[2][0];
falseChar = argv[3][0];
if (verbose)
if (!strcmp(args->lv_labels[i], "trueC"))
{
printf("trueChar: %c\nfalseChar: %c\n", trueChar, falseChar);
trueChar = args->lv_values[i][0];
}
if (!strcmp(args->lv_labels[i], "falseC"))
{
falseChar = args->lv_values[i][0];
}
}
char* inputString = argv[1];
char* inputString;
if (args->values_len > 0)
{
inputString = args->values[0];
}
else
{
printf("\n!!!NOT ENOUGH ARGUMNETS!!!\n\n");
return -1;
}
carg_parse_free(args);
if (verbose)
{

View File

@ -1,28 +1,28 @@
build: main.c
echo "Building executable"
@echo "Building executable"
mkdir -p "./Build"
@mkdir -p "./Build"
clang main.c -o "./Build/BigLetter"
@clang main.c carg-parse/carg-parse.c -o "./Build/BigLetter"
echo "Finished building executable"
echo "Executable is located at './Build/BigLetter'"
@echo "Finished building executable"
@echo "Executable is located at './Build/BigLetter'"
usage:
echo "BigLetter Usage:"
echo "Location: ./Build/BigLetter"
echo "Arguments:"
echo "Required: Input Text"
echo "Optional: Replacement True and False Characters"
echo "Optional: Verbose"
echo "'./Build/BigLetter' 'INPUT TEXT' 'TRUE CHAR' 'FALSE CHAR' 'v FOR VERBOSE"
@echo "BigLetter Usage:"
@echo "Location: ./Build/BigLetter"
@echo "Arguments:"
@echo "Required: Input Text"
@echo "Optional: Replacement True and False Characters"
@echo "Optional: Verbose"
@echo "'./Build/BigLetter' 'INPUT TEXT' 'TRUE CHAR' 'FALSE CHAR' 'v FOR VERBOSE"
example: ./build/BigLetter
"./Build/BigLetter" "Hello, World"
@"./Build/BigLetter" "Hello, World"
clean:
echo "Cleaning build directory"
@echo "Cleaning build directory"
rm -rf "./Build"
@rm -rf "./Build"
echo "Finished cleaning build directory"
@echo "Finished cleaning build directory"