From b5136b661b5c0f51f35311c2bfb7fe6ae252c611 Mon Sep 17 00:00:00 2001 From: Josh Ashton Date: Sat, 5 Aug 2023 12:10:58 -0600 Subject: [PATCH] many changes. rewritten mark, newproject, and goto in C. mark is 95% functional, with newproject and goto less so. --- goto | 41 +++++++++++ gupdate | 2 - mark | Bin 16136 -> 16136 bytes newproject | 1 - src/mark.c | 2 +- src/newproject | Bin 0 -> 16480 bytes src/newproject.c | 183 +++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 225 insertions(+), 4 deletions(-) create mode 100755 goto delete mode 100755 gupdate create mode 100755 src/newproject create mode 100644 src/newproject.c diff --git a/goto b/goto new file mode 100755 index 0000000..38ea43c --- /dev/null +++ b/goto @@ -0,0 +1,41 @@ +#!/bin/zsh + +# Dependencies: +# quaxlyqueen/scripts/mark + +BOOKMARKS_FILE=~/.bookmarks + +# Catch any invalid input. +if [[ $# -eq 0 || $# -gt 1 ]]; then + echo "\nImproper usage. Try:" + echo "\ngoto [keyword]" + echo " goto downloads" + echo " goto school" + echo " goto portfolio" + echo " goto -h" + echo " goto --help" + +# Display help. +elif [[ $1 == "-h" || $1 == "--help" ]]; then + echo "\nImproper usage. Try:" + echo "\ngoto [keyword]" + echo " goto downloads" + echo " goto school" + echo " goto portfolio" + echo " goto -h" + echo " goto --help" + +else + + # Locate the bookmark. + if [ $(grep -c "$1" $BOOKMARKS_FILE) -gt 0 ]; then + + # Go to the bookmark + cd $(grep "$1" $BOOKMARKS_FILE | head -n 1) + + # List bookmarks if bookmark was not found. + else + echo "Bookmark not found. Available bookmarks:" + mark -ls + fi +fi diff --git a/gupdate b/gupdate deleted file mode 100755 index 6ef54a9..0000000 --- a/gupdate +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/zsh - diff --git a/mark b/mark index 842f76e92589dca59b15e7a75e125948f3f02ffd..2eb85ef9f448d3715603b74f0464755d949ae1ac 100755 GIT binary patch delta 945 zcmZuwUr19?7(ZwKbh4StKWzxk-PDZA-OWJ3pi;vdL?{&XqSxEqy*ixR*zQUMHIRj4 z>>&?51Z7eXXb{$g+DkAC6hR^gqK6*rr6xid^iX8nzI#?Jumk7(zCXX;_kH(p?#$%O zU-%qL8HB9CvKzGRkM=} znoO7>j|`QwCJT9Dc1`iTI41CNFf4?E;}YWeQ1Ft-#}y%_@S{R7jN(d69E~D58ViOM z8Of2T6h^Wbio_)pO(=1l5Q5N z14vwIh0B=NDdBgPKz8#T@VIm`r&FeLrCb_und)Uqdjoayb3jVwl!jfL`66eWa;6e{ z3SDzQp>Fbjb(Nx~hiVcIsQZ?Vx0=5Px~<+_jT}YM-h!x>OW&Xa|IyM(Pd(K2j=~HK z*jczCv{m&_hxiYOLJ+?Ad_KS(s%mToM=|HeA;G2lzpcGcORK+@J+9AUV_9RIJoWfG zyMa;yyZw`PM)m6nIfBvyJilW4H$rSvb^G&q04UJrj5ovwQm1n8F_W2 z9otlE%Y?z^Z}HXpS$`|r&idfJ){!N)7w1*%b7P=*{C6-OP?uYWO0bO_?C@G`)ld?a djR+k*_ybvhSn)r5-_d4enF51VJ;y#8egOqiVG{rV delta 861 zcmZWoT}V@582-Mqo&CsWO*fok&K-~@lKU~pP(taVlY!|)2$8JQant48);wkyS|W;L zcwsNygwRDlkU?puU>639BFUm3i0HzL3ZsQk23-hQr}vzJ3;N)^&-*^l`##_I9nP5^ zn;u&*QL}?3+H!!6dd(hPzVgV2sh8T;-1%}FA;l>6@%tqw4KF|6T{*p?G`~GQdVT8o zADGkizyfOkgT93B0zvNuUhkwvp!za8phdqHEo!`klB6cEf!TRYII6`)jqPBav`)(| zvQD-O55d7AQ%Y-Kk*&Ir7?K7_FgPd)Vt-KV>ko#7NR%Ke_6bQ6N+#n;5{@TAF)}D6 zqX^+pJd6X;$SF~sN=m^2A%b)w8Hq`%BAye1;Ydt~Mn*!UHzb8(XGvI$#s{@Z9PUw_ z#DN4+E#!7Xv6ZHwyR^mHMhTgC_~N^w(4kJ4FLfPFz2j5M8TGa0Hn$XopPBrCDxZ4F z&#nuwujC)7eYU)BE#?`#8d{k`f8g(bJ|Knt=)e44*0iiB8+Cp&@Y z*ie)?L?7Z3;t|AE#LI|Vh%1Pd6zVySW}uTRqgjY>yXhI2Np?H#6v68~jnpKY>qi-jzusRR@C6!tdjtFN!>WP> zUk6>2sozDh#T~dxX_x${q1Q-RsBQ9^O%AlhWdfn;5d8$VkSqKXADi}>JzT!SBfFcw GFn> main.py; mark; # Create a new Flutter/Dart project. diff --git a/src/mark.c b/src/mark.c index 2c25632..e75e4dc 100644 --- a/src/mark.c +++ b/src/mark.c @@ -63,7 +63,7 @@ int main(int argc, char *argv[]) { // Append the current directory to the bookmarks file. else if(argc == 1) { char cwd[PATH_MAX]; - fprintf(f, "%s", getcwd(cwd, sizeof(cwd))); + fprintf(f, "\n%s", getcwd(cwd, sizeof(cwd))); printf("Successfully bookmarked %s.", cwd); } diff --git a/src/newproject b/src/newproject new file mode 100755 index 0000000000000000000000000000000000000000..674de3f01eb521aad62f4bd29d0e163b814e25f8 GIT binary patch literal 16480 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 U>(b|r`Rsd_Dve8X402fU->4v9P5=M^ literal 0 HcmV?d00001 diff --git a/src/newproject.c b/src/newproject.c new file mode 100644 index 0000000..ddec09e --- /dev/null +++ b/src/newproject.c @@ -0,0 +1,183 @@ +#include +#include +#include +#include +#include + +const int numTypes = 8; +int type; +char name[25]; + +const char *types[8]; + +int error() { + printf("Improper usage. Try:"); + + printf("\n\nnewproject { language }"); + printf("\n newproject"); + printf("\n newproject c"); + printf("\n newproject -h"); + printf("\n newproject --help"); + + printf("\n\nSupported languages/stacks:"); + for(int i = 0; i < numTypes; i++) { + printf("%s, ", types[i]); + } + + return 1; +} + +int help() { + printf("Abstracting away command line tools to create projects in various languages."); + printf("\nUser can use with or without arguments. Without arguments, 'newproject' will"); + printf("\nprompt for a supported language, project name, and if a git repository should"); + printf("\nbe created.\n\nBookmarks the new project directory using the 'mark' script."); + printf("\nDetects required tools to use based upon language selected.\n"); + printf("\n\nUsage:\nnewproject { language }"); + printf("\n newproject"); + printf("\n newproject c"); + printf("\n newproject -h"); + printf("\n newproject --help"); + + printf("\n\nSupported languages/stacks:"); + for(int i = 0; i < numTypes; i++) { + printf("%s, ", types[i]); + } + + return 0; +} + +void getName() { + printf("Project name: "); + fgets(name, 25, stdin); +} + +int initC() { + getName(); + mkdir(name, S_IRWXU); + chdir(name); + system("cp -r ~/templates/c/main.c"); + system("mark"); + return 0; +} + +void initRust() { + getName(); + char arduino[1]; + printf("Is this an Arduino project? (y/N): "); + scanf("%s", arduino); + + if(strcmp("y", arduino)) system("cargo generate --git https://github.com/Rahix/avr-hal-template.git"); + else if(strcmp("N", arduino) || strcmp("n", arduino)) { + char cmd[15]; + strcpy(cmd, "cargo new "); + strcat(cmd, name); + + system(cmd); + } else { + printf("\nThe choice is y, N, or n. Please try again."); + initRust(); + } +} + +void initCSharp() { + getName(); + mkdir(name, S_IRWXU); + chdir(name); + system("mark"); + system("dotnet new console"); +} + +void initJava() { + getName(); + mkdir(name, S_IRWXU); + chdir(name); + system("mark"); + system("gradle init"); +} + +void initHtml() { + getName(); + mkdir(name, S_IRWXU); + chdir(name); + + system("cp -r ~/templates/web/public_html"); + chdir("public_html"); + system("mark"); +} + +void initJs() { + getName(); + mkdir(name, S_IRWXU); + chdir(name); + system("mark"); + system("touch main.js"); +} + +void initPython() { + getName(); + mkdir(name, S_IRWXU); + chdir(name); + system("touch main.py"); + system("mark"); +} + +void initFlutter() { + getName(); + char cmd[25]; + strcpy(cmd, "flutter create "); + strcat(cmd, name); + system(cmd); + + chdir(name); + system("mark"); +} + +void initT3() { + system("npm create t3-app@latest"); +} + +void determineLang(char *argv[]) { + printf("determining lang"); + if(strcmp(argv[1], types[0]) == 0) initC(); + else if(strcmp(argv[1], types[1]) == 0) initRust(); + else if(strcmp(argv[1], types[2]) == 0) initCSharp(); + else if(strcmp(argv[1], types[3]) == 0) initJava(); + else if(strcmp(argv[1], types[4]) == 0) initJs(); + else if(strcmp(argv[1], types[5]) == 0) initT3(); + else if(strcmp(argv[1], types[6]) == 0) initPython(); + else if(strcmp(argv[1], types[7]) == 0) initFlutter(); +} + +int main(int argc, char *argv[]) { + types[0] = "c"; + types[1] = "rust"; + types[2] = "c-sharp"; + types[3] = "java"; + types[4] = "js"; + types[5] = "t3"; + types[6] = "python"; + types[7] = "flutter"; + + switch (argc) { + case 1: + printf("Language: "); + char *cmd[25]; + scanf("%s", *cmd); + + determineLang(cmd); + + break; + + case 2: + if(strcmp(argv[1], "-h") == 0) return help(); + else if(strcmp(argv[1], "--help") == 0) return help(); + else determineLang(argv[1]); + + break; + + default: + return error(); + } + return 0; +}