diff --git a/10x_alias.sh b/10x_alias.sh new file mode 100644 index 0000000..6928ea1 --- /dev/null +++ b/10x_alias.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +# Git +git_push_all_changes() { + git add . && git commit -am "${1}" && git push +} +alias git_just_push=git_push_all_changes +alias cd_root='cd $(git rev-parse --show-toplevel 2>/dev/null || echo ".")' +alias cd_git_root=cd_root + +# Tmux +command -v tmux >/dev/null && alias ta="tmux a" +command -v tmux >/dev/null && alias tat="tmux a -t" +command -v tmux >/dev/null && alias tls="tmux ls" +command -v tmux >/dev/null && alias tnew="tmux new" +command -v tmux >/dev/null && alias tnewt="tmux new -t" + +command -v eza >/dev/null && alias ls="eza --hyperlink --header --git -M --icons=auto --color=never" +alias ll='ls -alhF' +alias la='ls -Ah' +alias lsa="ls -lAFhZ" + +alias path="printenv | grep ^PATH= | sed 's/^PATH=//' | tr ':' '\n'" +command -v fzf >/dev/null && alias path="printenv | grep ^PATH= | sed 's/^PATH=//' | tr ':' '\n' | fzf" + +[ ! -f "$GITIGNORE_TEMPLATE" ] || alias cpgi="cp ${GITIGNORE_TEMPLATE} ." diff --git a/10x_project_access.sh b/10x_project_access.sh index 98f5270..959045d 100755 --- a/10x_project_access.sh +++ b/10x_project_access.sh @@ -1,53 +1,71 @@ #!/bin/sh # TODO: Alias to quickly add my template .gitignore file to any location -# - Create fuzzy finder for cht.sh & tldr -# - Move all dev prod scripts to its own project +# - Create fuzzy finder for cht.sh & tldr + system man pages + learnxinyminutes github op() { - local chosen_project - chosen_project="$(find -L ~/Code -mindepth 2 -maxdepth 2 -not -path '*/.*' -printf "%T@ %p\n" | sort -nr | cut -d ' ' -f 2- | fzf --prompt='Select a project: ')" + if ! command -v fzf >/dev/null; then + echo "Install fzf to use this function." + return 1 + fi + + project_dir="$(find -L ~/Code -mindepth 2 -maxdepth 2 -not -path '*/.*' -printf "%T@ %p\n" | sort -nr | cut -d ' ' -f 2- | fzf --prompt='Select a project: ')" # Do nothing and return if user cancelled out - if [ -z "$chosen_project" ]; then + if [ "$project_dir" = "" ]; then return 0 fi - cd "$chosen_project" || return + cd "$project_dir" || return nvim } -pnew(){ - local directory - directory="$(find -L ~/Code/ -mindepth 1 -maxdepth 1 -not -path '*/.*' -type d | sed '/Squbix\|KeepWorks\|Supra/d' | sort | fzf --prompt='In which directory? ')" +pnew() { + if ! command -v fzf >/dev/null; then + echo "Install fzf to use this function." + return 1 + 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 [ -z "$directory" ]; then + if [ "$directory" = "" ]; then return 0 fi - local project_name + # FIX: User cancelling out here + is_clone=$(printf 'yes\nno' | fzf) - # Until user provides a good directory name or cancels out - while [ -d "$directory/$project_name" ]; do - if [ -n "$1" ]; then - project_name="$1" - else - 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) - fi + if [ "$is_clone" = "yes" ]; then + # Clone the repo and open nvim on it + printf "Git repo URL: " >&2 + read -r git_url + cd "$directory" || return + git clone "$git_url" || cd - >/dev/null && return + cd "$(basename "$git_url" | cut -d '.' -f 1)" || return + else + # Loop until user provides a valid directory name or cancels out + while [ -d "$directory/$project_name" ]; do + if [ "$1" != "" ]; then + project_name="$1" + else + 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) + fi - if [ -z "$project_name" ]; then - echo "Cancelling..." - return 0 - fi + if [ "$project_name" = "" ]; then + echo "Cancelling..." + return 0 + fi - if [ -d "$directory/$project_name" ]; then - echo "'$directory/$project_name' already exists" - fi - done + if [ -d "$directory/$project_name" ]; then + echo "'$directory/$project_name' already exists" + fi + done - [ -d "$directory/$project_name" ] || mkdir -p "$directory/$project_name" || return + [ -d "$directory/$project_name" ] || mkdir -p "$directory/$project_name" || return + cd "$directory/$project_name" || return + git init || return + fi - cd "$directory/$project_name" || return nvim } diff --git a/README.MD b/README.MD index 5f51921..db4a4f8 100644 --- a/README.MD +++ b/README.MD @@ -1,4 +1,3 @@ - # Increase (My) Dev Productivity - A list of scripts to automate my daily development activities @@ -11,6 +10,3 @@ 1. Across all *nic OS 2. Across sh, bash, zsh -## Todo - -- [ ] Make a bootstrap file that symlinks new files to $XDG_CONFIG_HOME/shell/