diff --git a/.functions b/.functions new file mode 100644 index 00000000..a150ef4a --- /dev/null +++ b/.functions @@ -0,0 +1,38 @@ +#! /bin/sh +# +# .functions +# Functions for interactive shells +# + +proj() { + # Ensure we have an argument + if [ -z ${1+x} ]; then + echo "proj: requires argument" + return 1 + fi + projname="${1//[^ a-zA-Z0-9]/}" + projdir="$HOME/Projects/$projname" + # Ensure we have a ~/Projects directory + mkdir -p "$HOME/Projects" > /dev/null 2>&1 + # cd into the project or make it if necessary + if [ -d "$projdir" ]; then + # It exists + echo "Going to existing project \"$projname\"" + cd "$projdir" + else + # It does not exist + echo "Creating new project \"$projname\"" + mkdir -p "$projdir" + cd "$projdir" + if which git > /dev/null 2>&1; then + # Initialize git + echo "Initializing git with .gitignore" + git init > /dev/null 2>&1 + echo '*.swp' > .gitignore + git add .gitignore > /dev/null 2>&1 + git commit -am "Create gitignore" > /dev/null 2>&1 + git status + fi + fi +} + diff --git a/.profile b/.profile index 8a072d0e..ecb74271 100755 --- a/.profile +++ b/.profile @@ -88,6 +88,9 @@ alias cp='cp -i' alias todo='$EDITOR "$HOME/Documents/todo"' alias waitwhat='echo $?' +# Source ~/.functions, if it exists +[ -r "$HOME/.functions" ] && . "$HOME/.functions" + # Set up a default PS1 # This *should* work for all terminals. I know it works on ksh _ps1() {