From cf26cdc4b9cc848d03a7e108644541624bebc056 Mon Sep 17 00:00:00 2001 From: vx-clutch Date: Fri, 18 Jul 2025 11:19:45 -0400 Subject: [PATCH] feat: save --- README | 6 +++++ config.h | 2 +- core/standard.c | 27 ++++++++++++------- tools/add-header | 50 +++++++++++++++++++++++++++++++++++ tools/check-copyright-headers | 40 ++++++++++++++++++++++++++++ yait/main.c | 2 -- 6 files changed, 115 insertions(+), 12 deletions(-) create mode 100644 tools/add-header create mode 100644 tools/check-copyright-headers diff --git a/README b/README index 16eb077..11b9287 100644 --- a/README +++ b/README @@ -5,3 +5,9 @@ definitely complete. This tool will create a new directory containing all project files needed for your new C ( maybe C++ ) project. It provides you with a build system and some basic source files to give you a kick start on your new project--with optional libraries! + +The future of this project may be uncertain--however there are a few features I +for sure want to have. + + A --GNU flag that will add basic flag parsing into the project for the + --version and --help flags. diff --git a/config.h b/config.h index 5193ffa..b9db241 100644 --- a/config.h +++ b/config.h @@ -3,7 +3,7 @@ #define PROGRAM "yait" #define LICENSE_LINE "License BSD-3-Clause: BSD-3-Clause " -#define AUTHOR "vx_clutch" +#define AUTHORS "vx_clutch" #define VERSION "pre-alpha" #define YEAR 2025 diff --git a/core/standard.c b/core/standard.c index 56fdc99..1224992 100644 --- a/core/standard.c +++ b/core/standard.c @@ -4,15 +4,24 @@ #include #include -int parse_standard_options(void (*usage)(), int argc, char **argv) { - for (int i = 1; i < argc; ++i) { - if (strcmp(argv[i], "--help") == 0) { - usage(); - exit(0); - } else if (strcmp(argv[i], "--version") == 0) { - printf("%s %s %d\nCopyright (C) %d %s.\n%s\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRNTY, to the extent permitted by law.\n", PROGRAM, VERSION, COMMIT, YEAR, AUTHOR, LICENSE_LINE); - exit(0); +int +parse_standard_options (void (*usage) (), int argc, char **argv) +{ + for (int i = 1; i < argc; ++i) + { + if (strcmp (argv[i], "--help") == 0) + { + usage (); + exit (0); + } + else if (strcmp (argv[i], "--version") == 0) + { + printf ("%s %s %d\nCopyright (C) %d %s.\n%s\nThis is free software: " + "you are free to change and redistribute it.\nThere is NO " + "WARRNTY, to the extent permitted by law.\n", + PROGRAM, VERSION, COMMIT, YEAR, AUTHORS, LICENSE_LINE); + exit (0); + } } - } return 1; } diff --git a/tools/add-header b/tools/add-header new file mode 100644 index 0000000..56bf2f3 --- /dev/null +++ b/tools/add-header @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +header="// Copyright (C) 2025 $1 ( owestness@gmail.com ) +// See end of file for extended copyright information.\n" +footer=" +/* yait is yet another init tool. + * Copyright (C) 2025 $1 + * + * The file is part of yait. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation or + * other materials provided with the distribution. + * 3. Neither the name of vx-clutch nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +" + +if [[ "$#" -lt 1 ]]; then + echo "Usage: $0 name file1 [file2 ...]" + exit 1 +fi + +for file in "${@:2}"; do + if [[ ! -f "$file" ]]; then + echo "Error: File '$file' not found, skipping." + continue + fi + + echo -e "$header\n$(cat "$file")\n$footer" > "$file" + echo "Processed file: $file" +done diff --git a/tools/check-copyright-headers b/tools/check-copyright-headers new file mode 100644 index 0000000..3e03cb6 --- /dev/null +++ b/tools/check-copyright-headers @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +if pwd | grep -q tools; then + cd .. +fi + +files=$(find iota/ \( -name '*.c' -o -name '*.h' \)) +files+=" $(find . -maxdepth 1 -type f)" + +ignore="README COPYING .clang-format" + +if [ -z "$files" ]; then + echo "No files found" + exit 0 +fi + +missing="" + +for file in $files; do + if echo "$ignore" | grep -qw "$(basename "$file")"; then + continue + fi + echo -ne "$file... " + if grep -q "Copyright (C)" "$file"; then + echo -e "\033[1;32mOK\033[0m" + else + echo -e "\033[0;31mFAIL\033[0m" + missing+="$file " + fi +done + +if [ "$missing" = "" ]; then + echo -e "\033[1;32mAll checks pass.\033[0m" +else + echo -e "\033[0;31mThe follwing files are missing copyright information.\033[0m" +fi + +for file in $missing; do + echo " - $file" +done diff --git a/yait/main.c b/yait/main.c index ecef35a..3abac26 100644 --- a/yait/main.c +++ b/yait/main.c @@ -8,8 +8,6 @@ #include #include -#define AUTHORS vx_clutch - int create (format_t); void usage () {};