commit d6a236f8e412c771e6585c1b3f90279fe34c8bba Author: Josh Ashton Date: Tue Jun 13 19:41:00 2023 -0600 init commit diff --git a/gclone b/gclone new file mode 100755 index 0000000..fb6cccc --- /dev/null +++ b/gclone @@ -0,0 +1,62 @@ +#!/bin/zsh + +CONFIG="$HOME/.config/gclone/gclone.conf" + +# Detect if there is already a default user. If not, set it to quaxlyqueen. +if [[ $(grep -c "default-user: " $CONFIG) -gt 0 ]]; then + DEFAULT_USER=`grep "default-user: " $CONFIG | cut -d " " -f 2` +else + echo "default-user: quaxlyqueen" >> $CONFIG +fi + +# Catch any invalid input. +if [[ $# -eq 0 || $# -gt 2 ]]; then + echo "\nImproper usage. Try:" + echo "\ngclone [ { owner }/[ repo { -h | --help | --set-default [ username ] } ] ]" + echo " gclone gclone" + echo " gclone quaxlyqueen/gclone" + echo " gclone -h" + echo " gclone --help" + echo " gclone --set-default quaxlyqueen" + + exit + +# Display help. +elif [[ $1 == "-h" || $1 == "--help" ]]; then + echo "\nMaking the Git command line tool easier to use with simpler commands." + echo "User must provide an argument. This argument is in the format of:" + echo " \"owner/repository\"" + echo "The \"owner/\" portion may be excluded. By default, this will clone from" + echo "the owner quaxlyqueen. WIP: This may be configured at \"$CONFIG\"." + echo "an example is below." + + echo "\n\ndefault-user: quaxlyqueen" + + echo "\n\nUsage:" + echo "gclone [ { owner }/[ repo ] ] { -h | --help | --set-default [ username ] }" + echo " gclone gclone" + echo " gclone quaxlyqueen/gclone" + echo " gclone -h" + echo " gclone --help" + echo " gclone --set-default quaxlyqueen" + + exit + +# Set the default owner to clone repo's. +elif [[ $1 == "--set-default" ]]; then + sed -i "/default-user: /c\default-user: $2" $CONFIG + echo "\nDefault user has been set to $2" + exit + +# Clone a git repo from a specified owner. +elif [[ $1 =~ "/" ]]; then + git clone https://github.com/$1 + REPO=`cut $1 -d "/" -f 2` + +# Clone a git repo from the owner. By default, this will be the owner quaxlyqueen. +else + git clone https://github.com/$DEFAULT_USER/$1 + REPO=$1 +fi + +cd $REPO diff --git a/ginit b/ginit new file mode 100755 index 0000000..f1fbfb4 --- /dev/null +++ b/ginit @@ -0,0 +1,8 @@ +#!/bin/zsh + +git init +gh repo create + +git stage -A +git commit -m "init commit" +git push --set-upstream origin main 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/gpush b/gpush new file mode 100755 index 0000000..666a7eb --- /dev/null +++ b/gpush @@ -0,0 +1,31 @@ +#!/bin/zsh + +# Catch any input that is invalid. +if [[ $# -eq 0 || $# -gt 1 ]]; then + echo "\nImproper usage. Try:" + echo "\ngit-push [ \"message\" | -h | --help ]" + echo " git-push \"init commit\"" + echo " git-push -h" + echo " git-push --help" + + exit + +# Display help. +elif [[ $1 == "-h" || $1 == "--help" ]]; then + echo "\nMaking the Git command line tool easier to use with simpler commands." + echo "User must provide an argument. The argument must be wrapped in \"\" symbols." + + echo "\n\nUsage:" + echo "\ngit-push [ \"message\" | -h | --help ]" + echo " git-push \"init commit\"" + echo " git-push -h" + echo " git-push --help" + + exit + +# Push changes to remote repository. +else + git stage -A + git commit -m "$1" + git push +fi diff --git a/lookup b/lookup new file mode 100755 index 0000000..8693c90 --- /dev/null +++ b/lookup @@ -0,0 +1,31 @@ +#!/bin/zsh + +# Catch any invalid input. +if [[ $# -eq 0 || $# -gt 2 ]]; then + echo "Improper usage: lookup [command] [search term]" + echo "Available commands:" + echo " user [user]" + echo " eg. lookup user quaxlyqueen" + echo " repo [user] [repo]" + echo " eg. lookup repo quaxlyqueen/dnd" + +# Display help. +elif [[ $1 == "-h" || $1 == "--help" ]]; then + echo "Available commands:" + echo " user [user]" + echo " eg. lookup user quaxlyqueen" + echo " repo [user] [repo]" + echo " eg. lookup repo quaxlyqueen/dnd" + echo " -h" + echo " --help" + +# Lookup a user. +elif [[ $1 == "user" ]]; then + firefox https://github.com/$2 + +# Lookup a repo. +elif [[ $1 == "repo" ]]; then + + # TODO need to implement. + firefox https://github.com/$2 +fi diff --git a/mark b/mark new file mode 100755 index 0000000..ab448c9 --- /dev/null +++ b/mark @@ -0,0 +1,55 @@ +#!/bin/bash + +# Usage: mark [-ls] [-rm number] [-rm number TO number] +# Creates a bookmark of the current directory, displays a list of bookmarks if the -ls option is provided +BOOKMARKS_FILE=~/.bookmarks + +# Catch case where there are too many arguments. +if [[ $# -gt 1 ]]; then + echo "Proper usage: mark [ -ls | -rm [ keyword ] ]" + echo " eg. mark" + echo " eg. mark -ls" + echo " eg. mark -rm portfolio" + echo " eg. mark -h" + echo " eg. mark --help" + + exit + +# Help page +elif [[ $1 == "-h" || $1 == "--help" ]]; then + echo "\nCreate and manage persistent bookmarks inside of terminal sessions.\n" + echo "Usage:" + echo " mark" + echo " mark -ls" + echo " eg. run main" + echo " mark -rm" + echo " mark -h" + echo " mark --help" + + exit + +# Add a bookmark to the bookmarks file. +elif [ $# == 0 ]; then + echo $(pwd) >> $BOOKMARKS_FILE + +# List bookmarks stored in the bookmarks file. +elif [ "$1" == "-ls" ]; then + echo "Bookmarks:" + cat $BOOKMARKS_FILE + +# Remove a bookmark stored in the bookmarks file. +elif [ "$1" == "-rm" ]; then + # The user is trying to remove a single bookmark + # Check if the bookmark exists + if [ $(grep -c "$2" $BOOKMARKS_FILE) -gt 0 ]; then + + # Remove the bookmark + sed -i .bak $2d $BOOKMARKS_FILE + else + echo "Bookmark not found" + fi + +# Invalid argument, display an error message +else + echo "Usage: mark [-ls] [-rm [number | number TO number]]" +fi diff --git a/newproject b/newproject new file mode 100755 index 0000000..eaf7eb4 --- /dev/null +++ b/newproject @@ -0,0 +1,128 @@ +#!/bin/zsh + +# Dependencies: +# quaxlyqueen/templates +# +# quaxlyqueen/scripts/mark +# quaxlyqueen/scripts/goto +# quaxlyqueen/scripts/ginit + +# Supported languages. +TYPES=("c", "c-sharp", "java", "js", "go") + +# Catch case where there are too many arguments. +if [[ $# -gt 3 ]]; then + echo "Improper usage. Try:" + echo "\nnewproject { language } { projectname } { -g | --git-project }" + echo " newproject" + echo " newproject c" + echo " newproject c app" + echo " newproject c app -g" + echo " newproject c app --git-project" + echo " newproject -h" + echo " newproject --help\n" + + echo "Supported languages: $TYPES" + + exit + +# Help page +elif [[ $1 == "-h" || $1 == "--help" ]]; then + echo "\nAbstracting away command line tools to create projects in various languages." + echo "User can use with or without arguments." + echo "With no arguments, 'newproject' will prompt for a supported language, project name," + echo " and if a git repo should be created." + echo "Bookmarks the new project directory using the 'mark' script." + echo "Detects required tools to use based upon language selected.\n" + echo "Usage:" + echo "\nnewproject { language } { projectname } { -g | --git-project }" + echo " newproject" + echo " newproject c" + echo " newproject c app" + echo " newproject c app -g" + echo " newproject c app --git-project" + echo " newproject -h" + echo " newproject --help\n" + + echo "Supported languages: $TYPES" + + exit + +elif [[ $# -eq 0 ]]; then + read "?Language: " LANG + read "?Project name: " NAME + read "?Git project (y/N): " GIT + +# User provides the project's language. +elif [[ $# -eq 1 ]]; then + LANG=$1 + read "?Project name: " NAME + read "?Git project (y/N): " GIT + +# User provides arguments for the language and project name. +elif [[ $# -eq 2 ]]; then + LANG=$1 + NAME=$2 + read "?Git project (y/N): " GIT + +# User provides arguments for all fields. +elif [[ $# -eq 3 ]]; then + LANG=$1 + NAME=$2 + GIT=$3 +fi + +# Check if the language the user has provided is supported. +if [[ ${TYPES[@]} =~ $LANG ]]; then + echo Creating $LANG project $NAME + +# Language unsupported, prompt user to create a Github issue. +else + read "?Language is not supported. Create a GH issue (y/N): " GH + if [[ $GH == "y" || $GH == "" ]]; then + gh issue create --web + fi +fi + + +# Create a new C project. +if [[ $LANG == "c" ]]; then + cp -r ~/templates/c ./$NAME # Copy the template C file. + cd $NAME + mark; # Bookmark new project. + +# Create a new C# project with dotnet. +elif [[ $LANG == "c-sharp" ]]; then + mkdir $NAME + cd $NAME + mark; # Bookmark new project. + dotnet new console # Create a new console app with dotnet. + +# Create a new Java project with Gradle. +elif [[ $LANG == "java" ]]; then + mkdir $NAME; + cd $NAME; + mark; # Bookmark new project. + gradle init + +# Create a new HTML, CSS, JS project. +elif [[ $LANG == "html" ]]; then + mkdir $NAME; + cd $NAME; + + cp -r ~/templates/web/public_html . + cd public_html; + mark; # Bookmark new project. + +elif [[ $LANG == "js" ]]; then + mkdir $NAME; + cd $NAME; + + touch main.js; + mark; # Bookmark new project. +fi + +# If the user indicated the project will be a Git project, then run the ginit script. +if [[ $GIT == "-g" || $GIT == "--git-project" ]]; then + ginit; +fi diff --git a/run b/run new file mode 100755 index 0000000..a604f19 --- /dev/null +++ b/run @@ -0,0 +1,134 @@ +#!/bin/zsh + +# Supported languages. +TYPES=("c", "cs", "java", "js", "go") + +# Catch case where there are too many arguments. +if [[ $# -gt 1 ]]; then + echo "Proper usage: run {file}" + echo " eg. run" + echo " eg. run main" + echo " eg. run -h" + echo " eg. run --help" + + exit + +# Help page +elif [[ $1 == "-h" || $1 == "--help" ]]; then + echo "\nAbstracting away command line tools to compile and run code for various languages." + echo "User can use with or without an argument file, the filetype is not needed." + echo "With no arguments, 'run' will list available (and supported) files." + echo "Additionally, 'run' prompts for and passes command line arguments for a program.\n" + echo "Detects required tools to use based upon filetypes.\n" + echo "Usage:" + echo " run" + echo " run [filename]" + echo " eg. run main" + echo " run -h" + echo " run --help\n" + echo "Supported languages: $TYPES" + + exit + +# Default state, with a reminder of what files may be launched from based upon the currently supported languages. +elif [[ $# -eq 0 ]]; then + + echo "Files that may be launched from:" + + # List files available to launch from. + for f in * + do + TYPE=`echo $f | cut -d "." -f 2` + counter=0 + + # Only list supported filetypes. + if [[ ${TYPES[@]} =~ $TYPE ]]; then + counter=$((counter+1)) # Increment counter to indicate the number of results. + + # Format: filename (file type) + echo `echo $f | cut -d "." -f 1` "("$TYPE")" + fi + done + echo $counter" available files.\n" + + # Catch case where there are no available files to run and exit. + if [[ $counter -eq 0 ]]; then + echo "No available files to run. Exiting." + exit + fi + + read "?Which file would you like to launch from: " TMP + + # Locate file and assign variables associated with the file (name and filetype). + for f in * + do + FILE=`echo $f | cut -d "." -f 1` + if [[ $FILE == $TMP ]]; then + NAME=$TMP + TYPE=`echo $f | cut -d "." -f 2` + fi + done + +# User has provided the file name. +elif [[ $# -eq 1 ]]; then + + # Locate file and assign variables associated with the file (name and filetype). + for f in * + do + FILE=`echo $f | cut -d "." -f 1` + if [[ $FILE == $1 ]]; then + NAME=$FILE + TYPE=`echo $f | cut -d "." -f 2` + fi + done +fi + +read "?Arguments: " ARGS + +# Run C app. +if [[ $TYPE == "c" ]]; then + clear + echo "Compiling..." + gcc $NAME.c -lm + echo "Output..." + ./a.out $ARGS + +# Run C# app. +elif [[ $TYPE == "cs" ]]; then + clear + echo "Compiling..." + mcs -out:$NAME.exe $NAME.cs + echo "Output..." + mono $NAME.exe + +# Run Java app. +elif [[ $TYPE == "java" ]]; then + clear + CP=.:../lib/* + echo "Compiling..." + javac -cp $CP *.java + echo "Output..."; + java -cp $CP $NAME $ARGS + rm *.class + +# Run JavaScript app. +elif [[ $TYPE == "js" ]]; then + clear + echo "Output..." + node $NAME.js + +# Run Golang app. +elif [[ $TYPE == "go" ]]; then + clear + echo "Compiling..." + go build + echo "Output..." + ./discordo #TODO: need to dynamically obtain the newly created object file to run and then delete + rm discordo + +else + read "?Language is not supported. Create a GH issue (y/n, default y): " GH + if [[ $GH == "y" || $GH == "" ]]; then + echo "Need to implement issue reporting." + fi +fi