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"]
|
[submodule "font8x8"]
|
||||||
path = font8x8
|
path = font8x8
|
||||||
url = https://github.com/dhepper/font8x8.git
|
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 <stdbool.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "font8x8/font8x8.h"
|
#include "font8x8/font8x8.h"
|
||||||
|
#include "carg-parse/carg-parse.h"
|
||||||
|
|
||||||
#define SIZE 8
|
#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
|
carg_parse_data* args = carg_parse(argc, argv);
|
||||||
{
|
|
||||||
printf("not enough arguments provided");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
verbose = true;
|
||||||
|
|
||||||
printf("VERBOSE enabled \n");
|
printf("VERBOSE ENABLED");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (argc >= 4) // replace true and false chars if present in arguments
|
if (!strcmp(args->lv_labels[i], "trueC"))
|
||||||
{
|
|
||||||
trueChar = argv[2][0];
|
|
||||||
falseChar = argv[3][0];
|
|
||||||
|
|
||||||
if (verbose)
|
|
||||||
{
|
{
|
||||||
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)
|
if (verbose)
|
||||||
{
|
{
|
||||||
|
32
makefile
32
makefile
@ -1,28 +1,28 @@
|
|||||||
build: main.c
|
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 "Finished building executable"
|
||||||
echo "Executable is located at './Build/BigLetter'"
|
@echo "Executable is located at './Build/BigLetter'"
|
||||||
|
|
||||||
usage:
|
usage:
|
||||||
echo "BigLetter Usage:"
|
@echo "BigLetter Usage:"
|
||||||
echo "Location: ./Build/BigLetter"
|
@echo "Location: ./Build/BigLetter"
|
||||||
echo "Arguments:"
|
@echo "Arguments:"
|
||||||
echo "Required: Input Text"
|
@echo "Required: Input Text"
|
||||||
echo "Optional: Replacement True and False Characters"
|
@echo "Optional: Replacement True and False Characters"
|
||||||
echo "Optional: Verbose"
|
@echo "Optional: Verbose"
|
||||||
echo "'./Build/BigLetter' 'INPUT TEXT' 'TRUE CHAR' 'FALSE CHAR' 'v FOR VERBOSE"
|
@echo "'./Build/BigLetter' 'INPUT TEXT' 'TRUE CHAR' 'FALSE CHAR' 'v FOR VERBOSE"
|
||||||
|
|
||||||
example: ./build/BigLetter
|
example: ./build/BigLetter
|
||||||
"./Build/BigLetter" "Hello, World"
|
@"./Build/BigLetter" "Hello, World"
|
||||||
|
|
||||||
clean:
|
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