This repository has been archived on 2025-01-31. You can view files and clone it, but cannot push or open issues or pull requests.
Files
.config
.dsk
.local
.ssh
.themes
.vim
.functions
.gitconfig
.gitmodules
.inputrc
.profile
.vimrc
.xinitrc
home/.functions
2018-11-06 18:36:04 -06:00

61 lines
1.3 KiB
Bash

#! /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
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
}
# Autocompletion for bash
complete -F _proj proj > /dev/null 2>&1 &&
_proj() {
[ "${#COMP_WORDS[@]}" != "2" ] && return 0
for dir in $HOME/Projects/*; do
reply="$(basename "$dir")"
reply="${reply//[^ a-zA-Z0-9.]/}"
COMPREPLY+=" $reply"
done
unset reply
COMPREPLY=($(compgen -W "$COMPREPLY" "${COMP_WORDS[COMP_CWORD]}"))
return 0
}
# Autocompletion for zsh
compdef _proj proj > /dev/null 2>&1 &&
_proj() {
for dir in $HOME/Projects/*; do
temp="$(basename "$dir")"
temp="${reply//[^ a-zA-Z0-9.]/}"
reply+=" $temp"
done
return 0
}