aboutsummaryrefslogtreecommitdiff
path: root/src/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.c')
-rw-r--r--src/parser.c69
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");
+}