diff options
Diffstat (limited to 'src/parser.c')
| -rw-r--r-- | src/parser.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/parser.c b/src/parser.c new file mode 100644 index 0000000..fa52c3d --- /dev/null +++ b/src/parser.c @@ -0,0 +1,69 @@ +/* cfetch is my try to implement a neofetch/fastfetch/commiefetch clone in C. +* Copyright (C) 2026 Anser <https://codeberg.org/Anser/cfetch> +* +* cfetch is free software: you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation, either version 3 of the License, +* or (at your option) any later version. +* +* cfetch is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +* See the GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License along +* with this program. If not, see <https://www.gnu.org/licenses/>. +*/ + +#include "../include/cfetch.h" + +#define COMMAND(large, small) \ + (!strcmp(argv[i], large) || !strcmp(argv[i], small)) + +void parse_cmd(int argc, char **argv) +{ + for (int i = 1; i < argc; i++) { + if (argv[i][0] != '-') + { + fprintf(stderr, + "Error: invalid option: \"%s\". An option must start with `-`\n", + argv[i]); + print_help(); + exit(1); + } + if (COMMAND("--help", "-h")) { + print_help(); + exit(1); + } + if (COMMAND("--version", "-v")) { + printf("cfetch version: 0.1.1\n"); + exit(0); + } else { + fprintf(stderr, + "Error: invalid option: \"%s\"\n", + argv[i]); + print_help(); + exit(1); + } + } + + return; +} + +void parse_args(int argc, char **argv) +{ + if (argc == 1) { + return; + } + + parse_cmd(argc, argv); + return; +} + +void print_help() +{ + printf("\ncfetch, the neofetch/commifetch clone!\n"); + printf("\nusage: cfetch\t [-v | --version] [-h | --help]\n"); + printf(" -v --version\t prints the current version of cfetch.\n"); + printf(" -h --help\t prints the helper menu of cfetch.\n"); +} |
