Added 'Misc./terribly_old_scripts/mkcpp'

This commit is contained in:
anon 2024-12-10 20:39:02 +01:00
parent a13e6ab9c7
commit 73887e17e0

155
Misc./terribly_old_scripts/mkcpp Executable file
View File

@ -0,0 +1,155 @@
#!/bin/bash
# Script to automate basic C++ file creation.
# XXX:
#######
# Logical variables
VERBOSE=0
FORCE=0
MAIN=0
C=0
CPP=0
H=0
NAME=""
help_() {
# Help
echo "Usage:"
echo " mkcpp [options] [type] -o [file] [...]"
echo " -h : print this message and quit"
echo " -f : force (enable overwrite)"
echo " -m : mark [file] as a main() file"
echo " [type]:"
echo " -C : basic C source file"
echo " -CPP : basic C++ source file"
echo " -H : basic C/C++ header file"
exit
}
generate() {
# Aliasing
FORCE=$1
VERBOSE=$2
MAIN=$3
C=$4
CPP=$5
H=$6
NAME=$7
#echo "force: $FORCE"
#echo "main: $MAIN"
#echo "c: $C"
#echo "cpp: $CPP"
#echo "h: $H"
#echo "name: $NAME"
# Sanity check
TYPE_SUM=$(expr $C + $CPP + $H)
if (( $TYPE_SUM > 1 )); then
echo "Too many types specified, quitting..."
exit
elif [ $TYPE_SUM == 0 ]; then
CPP=1 # default to cpp
fi
# check and default [file] name
if [ -z $NAME ]; then
[ $CPP == 1 ] && NAME=main.cpp
[ $H == 1 ] && NAME=header.h
[ $C == 1 ] && NAME=main.c
fi
# Safety check
if [ -e $NAME ] && [ $FORCE == 0 ]; then
echo "[file] found, cowardly refusing to overwrite. Force with the -f option. Quiting..."
exit 1
fi
# Create
[ $VERBOSE == 1 ] && echo " -> $NAME"
#touch $NAME
# Fill with text
TAB=" "
if [ $H == 1 ]; then
GUARD_NAME=$NAME
GUARD_NAME=${GUARD_NAME//./_}
GUARD_NAME=${GUARD_NAME//\//_}
GUARD_NAME=${GUARD_NAME^^}
cat <<- H_FILE > ./$NAME
#ifndef $GUARD_NAME
#define $GUARD_NAME
#endif
H_FILE
return
fi
if [ $C == 1 ]; then
if [ $MAIN == 1 ]; then
cat <<- C_FILE_MAIN > ./$NAME
#include <stdio.h>
#include <stdlib.h>
signed main(int argc, char* argv[]){
${TAB}return 0;
}
C_FILE_MAIN
return
else
cat <<- C_FILE > ./$NAME
#include <stdio.h>
#include <stdlib.h>
C_FILE
return
fi
fi
if [ $CPP == 1 ]; then
if [ $MAIN == 1 ]; then
cat <<- CPP_FILE_MAIN > ./$NAME
#include <iostream>
using namespace std;
signed main(int argc, char* argv[]){
${TAB}return 0;
}
CPP_FILE_MAIN
return
else
cat <<- CPP_FILE > ./$NAME
#include <iostream>
CPP_FILE
return
fi
fi
}
GENCOUNT=0
NEXT=0
# Check options
for i in $@; do
[ $i == "-h" ] && help_ && exit 0
[ $i == "-v" ] && VERBOSE=1 && continue
[ $i == "-f" ] && FORCE=1 && continue
[ $i == "-m" ] && MAIN=1 && continue
[ $i == "-C" ] && C=1 && continue
[ $i == "-CPP" ] && CPP=1 && continue
[ $i == "-H" ] && H=1 && continue
[ $i == "-o" ] && NEXT=1 && continue
[ $NEXT == 1 ] && NAME=$i && generate $FORCE $VERBOSE $MAIN $C $CPP $H $NAME && GENCOUNT=$(expr $GENCOUNT + 1)
done
[ $GENCOUNT == 0 ] && generate $FORCE $VERBOSE $MAIN $C $CPP $H $NAME #&& GENCOUNT=$(expr $GENCOUNT + 1)