From ba6af6dad342d4c80c61578eaa75a6561d05efd1 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sun, 21 Aug 2022 21:29:05 -0500 Subject: [PATCH] Initial commit --- C/scripts/build.sh | 7 +++ C/scripts/commit.sh | 20 ++++++++ C/scripts/filelist | 2 + C/scripts/md5 | 2 + CProjectTemplate | Bin 0 -> 16696 bytes README.md | 19 ++++++++ install | 15 ++++++ main.c | 5 ++ sig | 9 ++++ utils/.coauthors | 1 + utils/.updateDirectories | 4 ++ utils/define.sh | 26 ++++++++++ utils/filelist | 5 ++ utils/main.sh | 28 +++++++++++ utils/md5 | 4 ++ utils/search.sh | 103 +++++++++++++++++++++++++++++++++++++++ 16 files changed, 250 insertions(+) create mode 100755 C/scripts/build.sh create mode 100755 C/scripts/commit.sh create mode 100644 C/scripts/filelist create mode 100644 C/scripts/md5 create mode 100755 CProjectTemplate create mode 100644 README.md create mode 100755 install create mode 100644 main.c create mode 100755 sig create mode 100644 utils/.coauthors create mode 100644 utils/.updateDirectories create mode 100755 utils/define.sh create mode 100644 utils/filelist create mode 100644 utils/main.sh create mode 100644 utils/md5 create mode 100644 utils/search.sh diff --git a/C/scripts/build.sh b/C/scripts/build.sh new file mode 100755 index 0000000..3cbcb64 --- /dev/null +++ b/C/scripts/build.sh @@ -0,0 +1,7 @@ +#Compiles the entire program then runs it, producing an executable. +#C +printf "Running program...\n\n\n" +if gcc $(find . -type f -name "*.c") ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then + ./${PROJECT_NAME} "$@" +fi +printf "\n\n" diff --git a/C/scripts/commit.sh b/C/scripts/commit.sh new file mode 100755 index 0000000..0f56a8f --- /dev/null +++ b/C/scripts/commit.sh @@ -0,0 +1,20 @@ +#Adds a commit message and pushes project to github repository. +#C +COMMIT_MESSAGE="$*" +FIRST_LINE=true +while IFS= read -r line +do +if [ "$FIRST_LINE" = true ]; then + COMMIT_MESSAGE+=" + +Co-authored-by: $line" +FIRST_LINE=false +else + COMMIT_MESSAGE+=" +Co-authored-by: $line" +fi +done < utils/.coauthors +git add -u +git add * +git commit -m "$COMMIT_MESSAGE" +git push \ No newline at end of file diff --git a/C/scripts/filelist b/C/scripts/filelist new file mode 100644 index 0000000..e0fa154 --- /dev/null +++ b/C/scripts/filelist @@ -0,0 +1,2 @@ +build.sh +commit.sh diff --git a/C/scripts/md5 b/C/scripts/md5 new file mode 100644 index 0000000..2749234 --- /dev/null +++ b/C/scripts/md5 @@ -0,0 +1,2 @@ +build.sh:fcbd8c14fe2a608d11166cf5aa7dba02 - +commit.sh:89783d2e6a165aa9612c79cfbd804a35 - diff --git a/CProjectTemplate b/CProjectTemplate new file mode 100755 index 0000000000000000000000000000000000000000..deadea398858006a6c816b2cd5e892b6f935c76e GIT binary patch literal 16696 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..cc55afb --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +This repository provides a template for starting a new C project using Sig's build system! Updates are automatically propogated. Run `./sig` for a list of commands and then use follow the instructions given to invoke them. Adjust variables as necessary in the `sig` command file. + +``` +@sigonasr2 ➜ /workspaces/CProjectTemplate (main) $ ./sig +Dev build, no checks required. + + Usage: ./sig {args} + +==== Current Configuration ===================== + PROJECT_NAME CProjectTemplate + BUILD_OPTIONS -lncurses + LANGUAGE C +===================================================== + + Command List: + + build Compiles the entire program then runs it, producing an executable. + commit Adds a commit message and pushes project to github repository. +'`` \ No newline at end of file diff --git a/install b/install new file mode 100755 index 0000000..cf8dc5d --- /dev/null +++ b/install @@ -0,0 +1,15 @@ +echo "Initializing..." +FILES=$(ls -dA */) +LANGUAGES=() +for f in $FILES +do + if [ "$f" != "scripts/" ] && [ "$f" != "utils/" ]; + then + LANGUAGES+=(""${f::-1}"") + fi +done +echo "Languages Detected:" +for f in "${LANGUAGES[@]}" +do + printf "\t%-15s\n" $f +done \ No newline at end of file diff --git a/main.c b/main.c new file mode 100644 index 0000000..e4b3f6b --- /dev/null +++ b/main.c @@ -0,0 +1,5 @@ +#include + +int main(int argc,char**argv) { + printf("Hello World!"); +} \ No newline at end of file diff --git a/sig b/sig new file mode 100755 index 0000000..4284122 --- /dev/null +++ b/sig @@ -0,0 +1,9 @@ +export AUTO_UPDATE=true + +source utils/define.sh + +define PROJECT_NAME "CProjectTemplate" +define CUSTOM_PARAMS "-lncurses" +define LANGUAGE "C" + +source utils/main.sh \ No newline at end of file diff --git a/utils/.coauthors b/utils/.coauthors new file mode 100644 index 0000000..b904d0f --- /dev/null +++ b/utils/.coauthors @@ -0,0 +1 @@ +sigonasr2 diff --git a/utils/.updateDirectories b/utils/.updateDirectories new file mode 100644 index 0000000..0c078d1 --- /dev/null +++ b/utils/.updateDirectories @@ -0,0 +1,4 @@ +Java/ +C/ +scripts/ +utils/ \ No newline at end of file diff --git a/utils/define.sh b/utils/define.sh new file mode 100755 index 0000000..214fc50 --- /dev/null +++ b/utils/define.sh @@ -0,0 +1,26 @@ +export VARS=("") + +export LANGUAGE="" + +function define() { + VARS+=("$1") + value="${*:2}" + eval export "$1"='$value' +} + +if [[ $(pwd) != *"SigScript" && $AUTO_UPDATE = "true" && $1 != "update" ]]; then + source utils/search.sh + + find . -type f -name md5 -delete + find . -type f -name filelist -delete + + #Check for hashes + FILES=$(cat utils/.updateDirectories) + for f in $FILES + do + search $f + check $f + done +else + echo "Dev build, no checks required." +fi \ No newline at end of file diff --git a/utils/filelist b/utils/filelist new file mode 100644 index 0000000..95ad5ff --- /dev/null +++ b/utils/filelist @@ -0,0 +1,5 @@ +.coauthors +define.sh +main.sh +search.sh +.updateDirectories diff --git a/utils/main.sh b/utils/main.sh new file mode 100644 index 0000000..d299d6b --- /dev/null +++ b/utils/main.sh @@ -0,0 +1,28 @@ +if [ -z "$1" ] + then + echo "" + echo " Usage: ./sig {args}" + echo "" + printf "====\tCurrent Configuration" + printf "\t=====================" + for t in ${VARS[@]} + do + printf "\n\t%-15s%20s" $t ${!t} + done + printf "\n=====================================================" + echo "" + echo "" + echo " Command List:" + FILES=$(ls -1A ./$LANGUAGE/scripts 2>/dev/null | sed -e 's/\.sh$//' | sed -e 's/^/ /') + for f in $FILES + do + if [ -f "./$LANGUAGE/scripts/$f.sh" ]; then + DESC="$(head -n1 ./$LANGUAGE/scripts/$f.sh)" + printf "\n\t%-15s%-65s" $f "${DESC:1}" + fi + done + echo "" + exit +fi + +./$LANGUAGE/scripts/$1.sh "${*:2}" \ No newline at end of file diff --git a/utils/md5 b/utils/md5 new file mode 100644 index 0000000..f7c5ca7 --- /dev/null +++ b/utils/md5 @@ -0,0 +1,4 @@ +define.sh:3ecab0dffe2adfb950f3eb7c7061b750 - +main.sh:d3d1bd0b56d8114eb7479964227f8576 - +search.sh:81d08f5ff48e8a44b5f68387d426da05 - +.updateDirectories:fa5e95db12be22ae8aed7ecbc560e38c - diff --git a/utils/search.sh b/utils/search.sh new file mode 100644 index 0000000..6707c16 --- /dev/null +++ b/utils/search.sh @@ -0,0 +1,103 @@ +function search() { + FILES2=$(ls -A $1 2>/dev/null) + for g in $FILES2 + do + if [ -d $1$g ]; + then + echo "$1$g is a directory" + search $1$g/ + else + echo "$1$g is a file" + if [ $g != "md5" ] && [ $g != "filelist" ] && [ $g != ".package.files" ]; then + if [ $g != ".coauthors" ] && [ $g != "version_info" ]; then + SUM=$(md5sum < $1$g) + echo "$g:$SUM" >> $1md5 + fi + echo "$g" >> $1filelist + else + echo " ignoring $g..." + fi + fi + done +} + +function check() { + echo "Check $1" + FILES2=$(ls -A $1 2>/dev/null) + if [ -f "$1/md5" ]; + then + echo " md5: http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1md5" + curl -H 'Cache-Control: no-cache, no-store' -s "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1md5" --output /tmp/out + cmp -s $1/md5 /tmp/out + if [ "$?" -ne 0 ] + then + echo " Differences detected!" + cat /tmp/out + while IFS= read -r line + do + IFS=':' read -ra split <<< $line + g="${split[0]}" + echo "LINE -- $g" + if [ "$g" != "md5" ] && [ "$g" != "filelist" ] && [ "$g" != ".package.files" ]; then + if [ -f $1$g ]; + then + if [ "$g" != ".coauthors" ] && [ "$g" != "version_info" ]; then + echo "++Redownload $1$g..." + if [ -f "$1$g" ]; then + curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $1$g + else + echo "===Could not find directory, assuming regular scripts directory exists." + curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $LANGUAGE/scripts/$g + fi + fi + else + echo "++==Downloading $1$g..." + curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $1$g + fi + fi + done < /tmp/out + fi + fi + if [ -f "$1/filelist" ]; + then + echo " filelist: http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1filelist" + curl -H 'Cache-Control: no-cache, no-store' -s "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1filelist" --output /tmp/out + cmp -s $1/filelist /tmp/out + if [ "$?" -ne 0 ] + then + echo " Differences detected!" + cat /tmp/out + while IFS= read -r line + do + IFS=':' read -ra split <<< $line + g="${split[0]}" + echo "LINE -- $g" + if [ "$g" != "md5" ] && [ "$g" != "filelist" ] && [ "$g" != ".package.files" ]; then + if [ -f $1$g ]; + then + if [ "$g" != ".coauthors" ] && [ "$g" != "version_info" ]; then + echo "++Redownload $1$g..." + if [ -f "$1$g" ]; then + curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $1$g + else + echo "===Could not find directory, assuming regular scripts directory exists." + curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $LANGUAGE/scripts/$g + fi + fi + else + echo "++==Downloading $1$g..." + curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $1$g + fi + fi + done < /tmp/out + fi + fi + for g in $FILES2 + do + if [ -d $1$g ]; + then + echo "$1$g is a directory" + check $1$g/ + fi + done +}