utilise carg-parse for better arg parsing
This commit is contained in:
parent
6dfce8b413
commit
d75c172461
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -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
1
carg-parse
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 01a42d665640712f96cdaa75b9bd672b8d2510e3
|
45
main.c
45
main.c
@ -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)
|
||||
{
|
||||
|
34
makefile
34
makefile
@ -1,28 +1,28 @@
|
||||
build: main.c
|
||||
echo "Building executable"
|
||||
|
||||
mkdir -p "./Build"
|
||||
@echo "Building executable"
|
||||
|
||||
clang main.c -o "./Build/BigLetter"
|
||||
@mkdir -p "./Build"
|
||||
|
||||
echo "Finished building executable"
|
||||
echo "Executable is located at './Build/BigLetter'"
|
||||
@clang main.c carg-parse/carg-parse.c -o "./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"
|
Loading…
x
Reference in New Issue
Block a user