80 lines
2.5 KiB
Bash
Executable File
80 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# TODO:
|
|
# - Create fuzzy finder for cht.sh & tldr + system man pages + learnxinyminutes github
|
|
|
|
# Quick open project files in NVIM
|
|
op() {
|
|
if ! command -v fzf >/dev/null; then
|
|
echo "Install fzf to use this function."
|
|
return 127
|
|
fi
|
|
|
|
# %T => Sort by last modified
|
|
# @ => time displayed in seconds (since 1.1.1970)
|
|
# %p => Directory path
|
|
project_dir="$(find -L ~/Code -mindepth 1 -maxdepth 5 -name ".git" -not -path '*/.stversions/*' -printf "%T@ %p\n" | sort -nr | cut -d ' ' -f 2- | xargs dirname | fzf --prompt='Select a project: ')"
|
|
|
|
# Do nothing and return if user cancelled out
|
|
if [ "$project_dir" = "" ]; then
|
|
return 0
|
|
fi
|
|
|
|
cd "$project_dir" || return 126
|
|
nvim
|
|
}
|
|
|
|
# Quick create new projects
|
|
pnew() {
|
|
if ! command -v fzf >/dev/null; then
|
|
echo "Install fzf to use this function."
|
|
return 127
|
|
fi
|
|
|
|
directory="$(find -L ~/Code/ -mindepth 1 -maxdepth 1 -not -path '*/.*' -type d | sed '/Squbix\|KeepWorks\|Supra/d' | sort | fzf --prompt='Creating new project. In which directory? ')"
|
|
|
|
# Do nothing and return if user cancelled out
|
|
if [ "$directory" = "" ]; then
|
|
return 0
|
|
fi
|
|
|
|
is_clone=$(printf 'no\nyes' | fzf --prompt='Clone from remote repo?')
|
|
|
|
# Do nothing and return if user cancelled out
|
|
if [ "$is_clone" = "" ]; then
|
|
return 0
|
|
fi
|
|
|
|
if [ "$is_clone" = "yes" ]; then
|
|
# Clone the repo and open nvim on it
|
|
printf "Git repo URL: "
|
|
read -r git_url
|
|
cd "$directory" || return 126
|
|
git clone "$git_url" || cd - >/dev/null && return
|
|
cd "$(basename "$git_url" | cut -d '.' -f 1)" || return 126
|
|
else
|
|
# Loop until user provides a valid directory name or cancels out
|
|
while [ -d "$directory/$project_name" ]; do
|
|
project_name=$(find -L "$directory" -mindepth 1 -maxdepth 1 -not -path '*/.*' -type d | fzf --print-query -e +i --prompt='Project name (AVOID EXISTING ONES BELOW): ' | head -1)
|
|
|
|
if [ "$project_name" = "" ]; then
|
|
echo "Cancelling..."
|
|
return 0
|
|
fi
|
|
|
|
if [ -d "$directory/$project_name" ] || [ -e "$directory/$project_name" ]; then
|
|
echo "$directory/$project_name already exists"
|
|
fi
|
|
done
|
|
|
|
if [ ! -d "$directory/$project_name" ] && [ ! -e "$directory/$project_name" ]; then
|
|
mkdir -p "$directory/$project_name" || return 126
|
|
fi
|
|
|
|
cd "$directory/$project_name" || return 126
|
|
git init || return 126
|
|
fi
|
|
|
|
nvim
|
|
}
|