diff --git a/Makefile b/Makefile index 65ef7e1..37827c8 100644 --- a/Makefile +++ b/Makefile @@ -1,37 +1,4 @@ -# -# Makefile for yait (requires GNU make) -# -# -# LICENSE: BSD-3-Clause -# -# Copyright (c) 2025 GCK -# -# 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 -# and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder 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. -# - +# SPDX-License-Identifier: BSD-3-Clause PACKAGE := yait SRCS := $(wildcard src/*.c) $(wildcard lib/*.c) @@ -40,11 +7,11 @@ OBJS := $(patsubst src/%.c,build/obj/%.o,$(SRCS)) BIN := bin/$(PACKAGE) COMMIT := $(shell git rev-list --count --all) -FLAGS := -I. -DCOMMIT=$(COMMIT) --std=c2x -pedantic +FLAGS := -I. -DCOMMIT=$(COMMIT) --std=c2x -pedantic -Ibuild/include VERSION := $(shell git describe --tags --always --dirty) TARBALL := $(PACKAGE)-$(VERSION).tar.gz -RELEASE_FILES := doc src lib COPYING AUTHORS README hello.1 INSTALL Makefile configure config.h +RELEASE_FILES := doc src lib COPYING AUTHORS README $(PACKAGE).1 INSTALL Makefile configure config.h -include config.mak @@ -90,4 +57,7 @@ distclean: clean release: clean all tar -czf $(TARBALL) $(RELEASE_FILES) +test: + @$(BIN) --version > /dev/null 2>&1 && echo "intact"|| echo "defective" + .PHONY: all clean distclean install uninstall build release doc diff --git a/README-dev b/README-dev index 2c22195..00ecf96 100644 --- a/README-dev +++ b/README-dev @@ -10,8 +10,8 @@ Notice ------ This documentation is standard across all GCK package and is not specified per -package; however, this is the defacto standard for most package. The only place -where this commonly differs is in non-binary or library packages. +package; however, this is the defacto standard for most packages. The only +place where this commonly differs is in non-binary or library packages. Build system @@ -39,7 +39,7 @@ the config.mak. This file is used by the Makefile to figure out C compiler to use, what CFLAGS and LDFLAGS to use, and where to install the binary if requested. By default these values are gcc, the release flag set, and /usr/local/. The configuration script supports the following flags that control -CFLAGS: --debug and CFLAGS="". By default, the script uses flags for a release +CFLAGS: --enable-debug and CFLAGS="". By default, the script uses flags for a release build. Debug is for in-development programming and is the strictest when it comes to warnings and other compiler output. CFLAGS="" is for custom flag definition. For the development environment is it recommended to use the @@ -51,7 +51,7 @@ For default behavior: For debug use: - ./configure --debug + ./configure --enable-debug For help text: @@ -83,8 +83,8 @@ structure it is a good starting point. git pull ./tools/Cleanup ./configure --debug - bear -- make - ./bin/yait --version + ./build-aux/generate-artifacts + make test This is to ensure that you have the most up-to-date source code, and that there are no major problems with the source control version. diff --git a/TODO b/TODO index b046b5d..e518558 100644 --- a/TODO +++ b/TODO @@ -2,8 +2,7 @@ GCK yait --- TODO Todo: - * improve file writting - * custom replace sytnax - * factor out the strings into seperate file + * fix 't' so that it handles names correctly + * write all templates end of file TODO diff --git a/bootstrap b/bootstrap index 8988dc7..2709639 100755 --- a/bootstrap +++ b/bootstrap @@ -1,49 +1,11 @@ #!/bin/sh -# gck.bootstrap - Prepares the build enviroment -# FEATURES: -# - Initializes submodules -# -# COMPILATION (Linux - POSIX): -# ./bootstrap -# -# -# LICENSE: BSD-3-Clause -# -# Copyright (c) 2025 GCK -# -# 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 -# and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder 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. -# - +# SPDX-License-Identifier: BSD-3-Clause me=$0 scriptversion="1.0.0" -version="make $scriptversion +version="$me $scriptversion Copyright (C) 2025 GCK. - This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law." @@ -80,5 +42,3 @@ git config -f .gitmodules --get-regexp path | while read -r key path; do echo "$0: initializing submodule '$path'..." git submodule update --init --recursive "$path" done - -# End: bootstrap diff --git a/build-aux/compile b/build-aux/compile index f3076fe..35c743b 100755 --- a/build-aux/compile +++ b/build-aux/compile @@ -1,47 +1,11 @@ #!/bin/sh -# gck.compile - Compile wrapper for GCK distributions -# -# COMPILATION (Linux - POSIX): -# ./compile -# -# -# LICENSE: BSD-3-Clause -# -# Copyright (c) 2025 GCK -# -# 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 -# and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder 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. -# - +# SPDX-License-Identifier: BSD-3-Clause me=$0 scriptversion="1.0.0" -version="make $scriptversion +version="$me $scriptversion Copyright (C) 2025 GCK. - This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law." @@ -97,5 +61,3 @@ if [ $? -ne 0 ]; then fi echo "$0: finish" - -# End: compile diff --git a/build-aux/generate-artifacts b/build-aux/generate-artifacts index 53bd4a3..0fb14d7 100755 --- a/build-aux/generate-artifacts +++ b/build-aux/generate-artifacts @@ -1,50 +1,11 @@ #!/bin/sh -# gck.generate-artifacts - Generate compile_commands.json -# -# FEATURES: -# - Generate compile_commands.json -# -# COMPILATION (Linux - POSIX): -# ./generate-artifacts -# -# -# LICENSE: BSD-3-Clause -# -# Copyright (c) 2025 GCK -# -# 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 -# and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder 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. -# - +# SPDX-License-Identifier: BSD-3-Clause me=$0 scriptversion="1.0.0" -version="make $scriptversion +version="$me $scriptversion Copyright (C) 2025 GCK. - This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law." @@ -69,7 +30,9 @@ while test $# -gt 0; do shift done +if [ ! -e "config.mak" ]; then + ./configure +fi + mkdir -p build bear --output build/compile_commands.json -- make -B -j"$(nproc)" - -# End: generate-artifacts diff --git a/configure b/configure index 4b30148..574ce01 100755 --- a/configure +++ b/configure @@ -1,50 +1,11 @@ #!/bin/sh -# gck.configure - Prepares the build system for GCK distributions -# FEATURES: -# - Generate config.mak -# - Sets C Flags -# -# COMPILATION (Linux - POSIX): -# ./configure -# -# -# LICENSE: BSD-3-Clause -# -# Copyright (c) 2025 GCK -# -# 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 -# and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder 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. -# - +# SPDX-License-Identifier: BSD-3-Clause me=$0 -scriptversion="1.0.1" +scriptversion="1.0.0" -version="make $scriptversion +version="$me $scriptversion Copyright (C) 2025 GCK. - This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law." @@ -196,5 +157,3 @@ printf "configure: creating config.mak... " printf "CC=%s\n" "$CC" } > config.mak printf "done\n" - -# End: configure diff --git a/scripts/manual/make b/scripts/manual/make index 33c3845..19e136a 100755 --- a/scripts/manual/make +++ b/scripts/manual/make @@ -1,50 +1,11 @@ #!/bin/sh -# gck.make - Generate manual page -# -# FEATURES: -# - Generate manual page -# -# COMPILATION (Linux - POSIX): -# ./make -# -# -# LICENSE: BSD-3-Clause -# -# Copyright (c) 2025 GCK -# -# 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 -# and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder 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. -# - +# SPDX-License-Identifier: BSD-3-Clause me=$0 scriptversion="1.0.0" -version="make $scriptversion +version="$me $scriptversion Copyright (C) 2025 GCK. - This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law." @@ -72,5 +33,3 @@ while test $# -gt 0; do done help2man --include=man/$package.x ./bin/$package > $package.1 - -# End: make diff --git a/shell.x b/shell.x new file mode 100644 index 0000000..0ef6ab5 --- /dev/null +++ b/shell.x @@ -0,0 +1,39 @@ +Format_Index: l,d,y,a,d,p +#!/bin/sh +# SPDX-License-Identifier: %s +# +# %s + +me=$0 +scriptversion="1.0.0" + +version="$me $scriptversion + +Copyright (C) %d %s +This is free software; you are free to change and redistribute it. +There is NO WARRANTY, to the textent permitted by law." + +usage="\ +Usage: $me [OPTION]... +%s + +Options: + + --help print this help and exit + --version output version information" + +while [ $# -gt 0 ]; do + case $1 in + --help) echo "$usage"; exit 0;; + --version) echo "$version"; exit 0;; + -*) + echo "$0: Unknown option '$1'." >&2 + echo "$0: Try '--help' for more information." >&2 + exit 1 ;; + esac + shift +done + +echo "$0: done." + +# End: %s diff --git a/src/license.h b/src/license.h index 72656f1..03a8305 100644 --- a/src/license.h +++ b/src/license.h @@ -1,38 +1,4 @@ -/* - * yait.licence - Contains licence source texts - * - * - * LICENSE: BSD-3-Clause - * - * Copyright (c) 2025 GCK - * - * 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 - * and/or other materials provided with the distribution. - * - * 3. Neither the name of the copyright holder 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. - */ - +// SPDX-License-Identifier: BSD-3-Clause #ifndef LICENCES_H #define LICENCES_H @@ -782,5 +748,3 @@ For more information, please refer to \ "; #endif - -/* end of licence.h */ diff --git a/src/shell.c b/src/shell.c new file mode 100644 index 0000000..d6d4375 --- /dev/null +++ b/src/shell.c @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: BSD-3-Clause +#include +#include +#include +#include + +int write_shell(char *package, char *license, int year, char *author, char *m) +{ + fs_write(package, "\ +#!/bin/sh\n\ +# SPDX-License-Identifier: %s\n\ +#\n\ +# %s\n\ +\n\ +me=$0\n\ +scriptversion=\"1.0.0\"\n\ +\n\ +version=\"$me $scriptversion\n\ +\n\ +Copyright (C) %d %s\n\ +This is free software; you are free to change and redistribute it.\n\ +There is NO WARRANTY, to the textent permitted by law.\"\n\ +\n\ +usage=\"\\\n\ +Usage: $me [OPTION]...\n\ +%s\n\ +\n\ +Options:\n\ +\n\ + --help print this help and exit\n\ + --version output version information\"\n\ +\n\ +while [ $# -gt 0 ]; do\n\ + case $1 in\n\ + --help) echo \"$usage\"; exit 0;;\n\ + --version) echo \"$version\"; exit 0;;\n\ + -*)\n\ + echo \"$0: Unknwon option '$1'.\" >&2\n\ + echo \"$0: Try '--help' for more information.\" >&2\n\ + exit 1 ;;\n\ + esac\n\ + shift\n\ +done\n\ +\n\ +echo \"$0: done.\"\n\ +\n\ +# End: %s\ +", + license, m, year, author, m, package); + struct stat st; + + if (stat(package, &st) != 0) { + fatalfa(errno); + } + + mode_t mode = st.st_mode | S_IXUSR; + + if (chmod(package, mode) != 0) { + fatalfa(errno); + } + return 0; +} diff --git a/src/shell.h b/src/shell.h new file mode 100644 index 0000000..36dd4f9 --- /dev/null +++ b/src/shell.h @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: BSD-3-Clause +#ifndef SHELL_H +#define SHELL_H + +int write_shell(char *package, char *license, int year, char *author, char *m); + +#endif diff --git a/src/yait.c b/src/yait.c index 98e10b3..a4b2d86 100644 --- a/src/yait.c +++ b/src/yait.c @@ -1,6 +1,5 @@ // SPDX-License-Identifier: BSD-3-Clause -/* Generate C project - * +/* * Copyright (C) 2025, GCK. * Written by vx-clutch (vx-clutch) */ @@ -9,7 +8,6 @@ #include #include #include -#include #include #include #include @@ -23,6 +21,7 @@ #include #include +#include "shell.h" #include "license.h" typedef enum { MIT, GPL, BSD, UNL } license_t; @@ -166,61 +165,19 @@ int main(int argc, char **argv) package = str_dup(argv[optind]); - if (shell) { - fs_write(package, "\ -#!/bin/sh\n\ -# SPDX-License-Identifier: %s\n\ -#\n\ -# %s\n\ -\n\ -me=$0\n\ -scriptversion=\"1.0.0\"\n\ -\n\ -version=\"$me $scriptversion\n\ -\n\ -Copyright (C) %d %s\n\ -This is free software; you are free to change and redistribute it.\n\ -There is NO WARRANTY, to the textent permitted by law.\"\n\ -\n\ -usage=\"\\\n\ -Usage: $me [OPTION]...\n\ -%s\n\ -\n\ -Options:\n\ -\n\ - --help print this help and exit\n\ - --version output version information\"\n\ -\n\ -while [ $# -gt 0 ]; do\n\ - case $1 in\n\ - --help) echo \"$usage\"; exit 0;;\n\ - --version) echo \"$version\"; exit 0;;\n\ - -*)\n\ - echo \"$0: Unknwon option '$1'.\" >&2\n\ - echo \"$0: Try '--help' for more information.\" >&2\n\ - exit 1 ;;\n\ - esac\n\ - shift\n\ -done\n\ -\n\ -echo \"$0: done.\"\n\ -\n\ -# End: %s\ -", - license_str, m, year, author, m, package); - struct stat st; + if (shell) + return write_shell(package, license_str, year, author, m); - if (stat(package, &st) != 0) { - fatalfa(errno); - } + char *project_dir; + asprintf(&project_dir, "%s/", package); - mode_t mode = st.st_mode | S_IXUSR; + fs_new(project_dir); + if (chdir(project_dir)) + fatalfa(errno); - if (chmod(package, mode) != 0) { - fatalfa(errno); - } - return exit_status; - } + fs_write("README", templ_README, author, package, package, m, year, + author, author, package); + fs_write("README-dev", templ_README_dev, year, author); return exit_status; } @@ -238,8 +195,9 @@ Generates an opinionated C project.\n", stdout); puts(""); fputs("\ - --author=NAME Set the program author (default git username|system username)\n\ - --license=LICENSE Set the program license (default BSD)\n", + -m DESC Set the program description (default \"Does a thing\")\n\ + --author NAME Set the program author (default git username|system username)\n\ + --license LICENSE Set the program license (default BSD)\n", stdout); exit(exit_status); } @@ -254,5 +212,3 @@ static void print_version() puts("There is NO WARRANTY, to the extent permitted by law."); exit(exit_status); } - -/* end of file yait.c */ diff --git a/t/INSTALL.x b/t/INSTALL.x new file mode 100644 index 0000000..4a69adc --- /dev/null +++ b/t/INSTALL.x @@ -0,0 +1,55 @@ +Format_Index: y, a +Installation Instructions +************************* + +Copyright (C) %d %s + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell command `./configure && make && make install` should +configure, build, and install this package. The following more-detailed +instruction are generic; see the `README` file for instructions specific to +this package. + + The `configure` shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values within a `Makefile` to build for that POSIX system as +defined by `config.mak` which was generated by `configure`. + +Compilers and Options +===================== + + Some systems require unusal options for compilation or linking that +the `configure` script does not know about. If you run into an issue +run `./configure --help` to figure out what you can do to fix the +behavoir. + +Installation Names +================== + + By default, `make install` installs the package's command under +`/usr/local/bin`. You can specify an installation prefix other than `/usr/local/` +by giving `configure` the option `--prefix=PREFIX` to `configure`, the package uses +PREFIX as the prefix for installation programs and libraries. +Documentation and other data files still use the regular prefix. + +`configure` Invokation +====================== + + `configure` recongizes the following options to control its operations. + + `--help` + Prints a summary of all the options to `configure`, and exits. + `--prefix=PREFIX` + Sets the installation prefix. + `CFLAGS` + Sets the flags used during compilation. + +`configure` also accepts some other options. Run `configure --help` for more +details diff --git a/t/Makefile.x b/t/Makefile.x new file mode 100644 index 0000000..81de4f4 --- /dev/null +++ b/t/Makefile.x @@ -0,0 +1,64 @@ + Format_Index: p +# SPDX-License-Identifier: BSD-3-Clause +PACKAGE := %s + +SRCS := $(wildcard src/*.c) $(wildcard lib/*.c) +OBJS := $(patsubst src/%.c,build/obj/%.o,$(SRCS)) + +BIN := bin/$(PACKAGE) + +COMMIT := $(shell git rev-list --count --all) +FLAGS := -I. -DCOMMIT=$(COMMIT) --std=c2x -pedantic -Ibuild/include + +VERSION := $(shell git describe --tags --always --dirty) +TARBALL := $(PACKAGE)-$(VERSION).tar.gz +RELEASE_FILES := doc src lib COPYING AUTHORS README $(PACKAGE).1 INSTALL Makefile configure config.h + +-include config.mak + +ifeq ($(wildcard config.mak),) +all: + @echo "File config.mak not found, run configure" + @exit 1 +else + +all: build $(BIN) doc + +build: + mkdir -p bin + mkdir -p build/obj + +build/obj/%.o: src/%.c config.mak + $(CC) $(FLAGS) $(CFLAGS) -c $< -o $@ + +$(BIN): $(OBJS) + $(CC) $(FLAGS) $(CFLAGS) $^ -o $@ + +endif + +install: $(BIN) + cp $(BIN) $(PREFIX) + +doc: + $(MAKE) -C doc all + +uninstall: + $(RM) $(PREFIX)$(PACKAGE) + +clean: + $(RM) -r bin + $(RM) -r build + $(MAKE) -C doc clean + +distclean: clean + $(RM) config.mak config.status + $(RM) $(TARBALL) + $(MAKE) -C doc clean + +release: clean all + tar -czf $(TARBALL) $(RELEASE_FILES) + +test: + @$(BIN) --version > /dev/null 2>&1 && echo "intact"|| echo "defective" + +.PHONY: all clean distclean install uninstall build release doc diff --git a/t/README-dev.x b/t/README-dev.x new file mode 100644 index 0000000..7476f18 --- /dev/null +++ b/t/README-dev.x @@ -0,0 +1,113 @@ +Format_Index: y, a +This README.dev file describes the development environment. + + Copyright (C) %d %s. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. + +Notice +------ + +This documentation is standard across all GCK package and is not specified per +package; however, this is the defacto standard for most packages. The only +place where this commonly differs is in non-binary or library packages. + + +Build system +------------ + +This distribution uses a GNU autotools-like build system. This is made up of a +configure script, and a Makefile. The configure script detects a C23 compiler +on the system and sets any program flags: debug, release, custom. The Makefile +builds the binary based on the output [config.mak] of the configure script. + + +Building +-------- + +To build this distribution you first must run the configure script. This +outputs a config.mak file that will be used in the Make step. Then run make; +this builds the objects into build/ and the binary into bin/. + + +Configuration +------------- + +The configuration script is used to generate a build intermediate step called +the config.mak. This file is used by the Makefile to figure out C compiler to +use, what CFLAGS and LDFLAGS to use, and where to install the binary if +requested. By default these values are gcc, the release flag set, and +/usr/local/. The configuration script supports the following flags that control +CFLAGS: --enable-debug and CFLAGS="". By default, the script uses flags for a release +build. Debug is for in-development programming and is the strictest when it +comes to warnings and other compiler output. CFLAGS="" is for custom flag +definition. For the development environment is it recommended to use the +--debug flag. Some examples of how you can run the configure script: + +For default behavior: + + ./configure + +For debug use: + + ./configure --enable-debug + +For help text: + + ./configure --help + +The help text is a more useage specific and up-to-date reference for +the configure script. + + +Makefile +-------- + +The GNU Makefile is used to build the final executable, clean up build +artifacts, and install the program. It checks for the config.mak which is +generated by the configure script. For a regular build, once you have the +configure script with desired flags, run: + + make + +This builds the executable to bin/ and build objects to build/ + + +Suggested enviroment setup +-------------------------- +It is suggested that you run do the following things to prepare you environment +for development. This is not a strict enforcement, but due to the project +structure it is a good starting point. + + git pull + ./tools/Cleanup + ./configure --enable-debug + ./build-aux/generate-artifacts + make test + +This is to ensure that you have the most up-to-date source code, and that there +are no major problems with the source control version. + +The git pull is used to sync with the repository and prevent conflicts. The +cleanup is to ensure their are no lingering build artifacts. The configure with +debug enabled is for strict build flags and -ggdb. Bear is used to generated +compile_commands.json for the clang suite of tooling. Finally, run the program +to ensure the chain works. + + +Pre-commit checks +----------------- + +Before you commit to source control ensure that done the following: + + * Run the cleanup scripts + + ./tools/Cleanup + + * Ensure that all changes were atomic + + * If you compted a TODO list item check it off. + + * Based on complexity, test the feature accordingly. diff --git a/t/README-release.x b/t/README-release.x new file mode 100644 index 0000000..b33476f --- /dev/null +++ b/t/README-release.x @@ -0,0 +1,33 @@ +Format_Index: +Here are most of the steps before you make a release. + +* Start from a clean, up-to-date git driectory on "master": + + make -k distclean || { ./configure && make distclean; } + git checkout master + git pull origin master + +* Ensure that the latest stable versions of make, sh, etc. +are in your path. See the prerequisites list in README-dev +for a compile list of tools. + +* Ensure that you have no uncommitted diffs. This should produce +no output: + + git diff + +* Ensure that you've pushed all changes that belong in the release: + + git push origin master + +* Pre-release testing: ensure that the following command succeeds: + + make check syntax-check distcheck + +Once all the builds and tests have passed, + +* Run the following to create release tarballs. + + make release + +* Upload the tarball to the relavent distribtuion platform. diff --git a/t/README.x b/t/README.x new file mode 100644 index 0000000..89d9232 --- /dev/null +++ b/t/README.x @@ -0,0 +1,30 @@ +Format_Index: a, p, p, d, y, a, a, p +This is the README file for the %s %s distribution. +%s %s + + Copyright (C) %d %s. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. + +See the files ./INSTALL* for building and installation instructions. + +Bug reports: + Please include enough information for the maintainers to reproduce the + problem. Generally speaking, that means: +- the contents of any input files necessary to reproduce the bug + and command line invocations of the program(s) involved (crucial!). +- a description of the problem and any samples of the erroneous output. +- the version number of the program(s) involved (use --version). +- hardware, operating system, and compiler versions (uname -a). +- unusual options you gave to configure, if any (see config.mak). +- anything else that you think would be helpful. + +See README-dev for information on the development environment -- any +interested parties are welcome. If you're a programmer and wish to +contribute, this should get you started. If you're not a programmer, +your help in writing test cases, checking documentation against the +implementation, etc., would still be very much appreciated. + +%s %s is free software. See the file COPYING for copying conditions. diff --git a/t/shell.x b/t/shell.x new file mode 100644 index 0000000..af2d7f3 --- /dev/null +++ b/t/shell.x @@ -0,0 +1,32 @@ +Format_Index: l, y, a, d +#!/bin/sh +# SPDX-License-Identifier: %s +me=$0 +scriptversion="1.0.0" + +version="$me $scriptversion + +Copyright (C) %d %s. +This is free software; you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law." + +usage="\ +Usage: $me [OPTION]... +%s + +Options: + + --help print this help and exit + --version output version information" + +while test $# -gt 0; do + case $1 in + --help) echo "$usage"; exit 0;; + --version) echo "$version"; exit 0;; + -*) + echo "$0: Unknown option '$1'." >&2 + echo "$0: Try '--help' for more information." >&2 + exit 1;; + esac + shift +done diff --git a/t/t b/t/t new file mode 100755 index 0000000..3a5a111 --- /dev/null +++ b/t/t @@ -0,0 +1,154 @@ +#!/bin/sh +# SPDX-License-Identifier: BSD-3-Clause +me=$0 +scriptversion="1.0.1" + +version="$me $scriptversion + +Copyright (C) 2025 GCK. +This is free software; you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law." + +usage="\ +Usage: $me [OPTION]... +Generate template headers + +Options: + + --help print this help and exit + --version output version information" + +while test $# -gt 0; do + case $1 in + --help) echo "$usage"; exit 0;; + --version) echo "$version"; exit 0;; + -*) + echo "$0: Unknown option '$1'." >&2 + echo "$0: Try '--help' for more information." >&2 + exit 1;; + esac + shift +done + +x_files=$(find . -maxdepth 1 -name "*.x" -type f | sort) + +if test -z "$x_files"; then + echo "$0: No .x files found in current directory." >&2 + exit 1 +fi + +output_file="../build/include/template.h" +mkdir -p ../build/include/ + +first_template=true + +{ + echo "/* DO NOT MODIFY THIS FILE! It was generated by t $scriptversion. */" + echo "#ifndef TEMPLATE_H" + echo "#define TEMPLATE_H" + + for input_file in $x_files; do + base_name=$(basename "$input_file" .x) + template_name=$(echo "$base_name" | tr '[:lower:]' '[:upper:]') + + tmp_format=$(mktemp) + tmp_template=$(mktemp) + tmp_params=$(mktemp) + + format_index=$(head -n 1 "$input_file") + if ! echo "$format_index" | grep -q "^Format_Index:"; then + echo "$0: '$input_file': Missing Format_Index line." >&2 + rm -f "$tmp_format" "$tmp_template" "$tmp_params" + continue + fi + + if test "$first_template" = false; then + echo "" + fi + first_template=false + + tmp_specs=$(mktemp) + + echo "$format_index" | sed 's/Format_Index://' | tr ',' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' > "$tmp_params" + + tail -n +2 "$input_file" | sed '/^$/d' > "$tmp_template" + + param_names="" + while IFS= read -r param; do + param_names="$param_names $param" + done < "$tmp_params" + + while IFS= read -r line; do + echo "$line" | grep -o '%[sdifgxXoucpeEaAn]' >> "$tmp_specs" + done < "$tmp_template" + + echo "/*" + + param_idx=1 + for param in $param_names; do + format_type="" + spec=$(sed -n "${param_idx}p" "$tmp_specs") + case "$spec" in + %s|%S) format_type="(s)" ;; + %d|%i|%u|%x|%X|%o) format_type="(d)" ;; + %f|%g|%e|%E|%a|%A) format_type="(f)" ;; + %c) format_type="(c)" ;; + %p) format_type="(p)" ;; + %n) format_type="(n)" ;; + *) format_type="(?)" ;; + esac + + case "$param" in + a) param="author" ;; + y) param="year" ;; + l) param="license" ;; + d) param="description" ;; + p) param="package" ;; + esac + + printf " * %-13s%s\n" "$param" "$format_type" + param_idx=$((param_idx + 1)) + done + + echo " */" + echo "const char templ_${template_name}[] = \"\\" + + line_count=0 + total_lines=$(wc -l < "$tmp_template") + while IFS= read -r line; do + line_count=$((line_count + 1)) + escaped_line=$(echo "$line" | sed \ + -e 's/\\\\/__BSLASH__/g' \ + -e 's/\\"/__BQUOTE__/g' \ + -e 's/\\n/__NEWLINE__/g' \ + -e 's/\\t/__TAB__/g' \ + -e 's/\\r/__RETURN__/g' \ + -e 's/\\a/__ALERT__/g' \ + -e 's/\\b/__BACKSPACE__/g' \ + -e 's/\\f/__FORMFEED__/g' \ + -e 's/\\v/__VTAB__/g' \ + -e 's/\\0/__NULL__/g' \ + -e 's/\\/\\\\/g' \ + -e 's/"/\\"/g' \ + -e 's/__BSLASH__/\\\\/g' \ + -e 's/__BQUOTE__/\\"/g' \ + -e 's/__NEWLINE__/\\n/g' \ + -e 's/__TAB__/\\t/g' \ + -e 's/__RETURN__/\\r/g' \ + -e 's/__ALERT__/\\a/g' \ + -e 's/__BACKSPACE__/\\b/g' \ + -e 's/__FORMFEED__/\\f/g' \ + -e 's/__VTAB__/\\v/g' \ + -e 's/__NULL__/\\0/g') + if test $line_count -lt $total_lines; then + printf '%s\\n\\\n' "$escaped_line" + else + printf '%s";\n' "$escaped_line" + fi + done < "$tmp_template" + + rm -f "$tmp_format" "$tmp_template" "$tmp_params" "$tmp_specs" + done + + echo "#endif" +} > "$output_file" diff --git a/tools/Cleanup b/tools/Cleanup index af68cfe..09448f4 100755 --- a/tools/Cleanup +++ b/tools/Cleanup @@ -1,52 +1,11 @@ #!/bin/sh -# gck.Cleanup - Cleanup the distribution -# -# FEATURES: -# - Run makefile cleans -# - Run formats -# - Cleanup artifacts -# -# COMPILATION (Linux - POSIX): -# ./Cleanup -# -# -# LICENSE: BSD-3-Clause -# -# Copyright (c) 2025 GCK -# -# 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 -# and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder 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. -# - +# SPDX-License-Identifier: BSD-3-Clause me=$0 scriptversion="1.0.0" -version="make $scriptversion +version="$me $scriptversion Copyright (C) 2025 GCK. - This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law." @@ -88,5 +47,3 @@ run rm -f compile_commands.json run make distclean echo "done." - -# End: Cleanup diff --git a/tools/format b/tools/format index 82b3d38..ad3a073 100755 --- a/tools/format +++ b/tools/format @@ -1,50 +1,11 @@ #!/bin/sh -# gck.format - Format C source code -# -# FEATURES: -# - Uses clang-format to force C code -# -# COMPILATION (Linux - POSIX): -# ./format -# -# -# LICENSE: BSD-3-Clause -# -# Copyright (c) 2025 GCK -# -# 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 -# and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder 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. -# - +# SPDX-License-Identifier: BSD-3-Clause me=$0 scriptversion="1.0.0" -version="make $scriptversion +version="$me $scriptversion Copyright (C) 2025 GCK. - This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law." @@ -71,5 +32,3 @@ done find . -type f -name '*.c' ! -path './lib/*' ! -path './gcklib/*' -exec clang-format -i --verbose {} + find . -type f -name '*.h' ! -path './lib/*' ! -path './gcklib/*' -exec clang-format -i --verbose {} + - -# End: format diff --git a/tools/update-gcklib b/tools/update-gcklib index d06bc76..1a8a031 100755 --- a/tools/update-gcklib +++ b/tools/update-gcklib @@ -1,50 +1,11 @@ #!/bin/sh -# gck.update-gcklib - Update gcklib submodule -# -# FEATURES: -# - Updates gcklib -# -# COMPILATION (Linux - POSIX): -# ./update-gcklib -# -# -# LICENSE: BSD-3-Clause -# -# Copyright (c) 2025 GCK -# -# 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 -# and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder 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. -# - +# SPDX-License-Identifier: BSD-3-Clause me=$0 scriptversion="1.0.0" -version="make $scriptversion +version="$me $scriptversion Copyright (C) 2025 GCK. - This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law." @@ -73,5 +34,3 @@ while test $# -gt 0; do done git submodule update --remote --rebase -- gcklib - -# End: update-gcklib diff --git a/yait.1 b/yait.1 index 16abec9..0d8aa5a 100644 --- a/yait.1 +++ b/yait.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.2. -.TH YAIT "1" "November 2025" "yait beta 211" "User Commands" +.TH YAIT "1" "November 2025" "yait beta 212" "User Commands" .SH NAME yait - An opinionated C project generator .SH SYNOPSIS @@ -14,10 +14,13 @@ display this help and exit \fB\-\-version\fR display version information and exit .TP -\fB\-\-author\fR=\fI\,NAME\/\fR +\fB\-m\fR DESC +Set the program description (default "Does a thing") +.TP +\fB\-\-author\fR NAME Set the program author (default git username|system username) .TP -\fB\-\-license\fR=\fI\,LICENSE\/\fR +\fB\-\-license\fR LICENSE Set the program license (default BSD) .SH "ADDITIONAL INFORMATION" .UR https://github.com/gck-org/yait