Alternar entre projetos no terminal
Aquela ajuda para entrar na pasta do projeto!
Exemplo:
$ cdp blog
$ pwd
/home/usuario/public_html/blog
$ cdp tema_wordpress
$ pwd
/home/usuario/public_html/wordpress/wp-content/themes/tema_wordpress
Códigos
Meu caminho para os scripts: ~/Apps/sh
Arquivo ~/.bashrc
:
#
# cdp.sh
#
export CDP_PATHS=( "$HOME/public_html/wordpress/wp-content/themes" "$HOME/public_html" )
alias cdp='. ~/Apps/sh/cdp.sh'
source ~/Apps/sh/cdp_complete.sh # Autocompletar projeto com a tecla tab
Arquivo ~/Apps/sh/cdp.sh
:
#!/bin/sh
if [ -z "$CDP_PATHS" ]
then
echo '> É necessário definir as pastas onde seus projetos estão guardados.'
echo ' Utilize o comando:'
echo $'\texport CDP_PATHS=( "$HOME/projetos" "$HOME/outros_projetos" )'
echo ''
echo ' Inclua a linha acima no arquivo ~/.bashrc para não precisar repetir'
echo ' este processo.'$'\n'
return
fi
paths=${CDP_PATHS[*]}
if [ -z "$1" ]
then
read -p '> Qual projeto? ' project
else
project=$1
fi
for path in ${paths[@]}
do
folder="$path/$project"
if [ -d $folder ]
then
echo "> Entrando em $folder"$'\n'
cd $folder
break
fi
done
if [ ! -d $folder ]
then
echo '> Projeto não encontrado nas pastas:'
for path in ${paths[@]}
do
echo " $path"
done
echo ''
fi
Arquivo ~/Apps/sh/cdp_complete.sh
:
paths=${CDP_PATHS[*]}
_cdp() {
# declare variable 'cur' (holds string to complete) as local
local cur
# initialize completion (abort on fail)
_init_completion || return
projects=()
for path in ${paths[@]}
do
if [ -d $path ]
then
projects+=( $(ls -d $path/*/ | xargs -l basename) )
fi
done
projects_str=$( printf "%s " "${projects[@]}" )
COMPREPLY=( $( compgen -W '$projects_str' -- "$cur" ) )
} && complete -F _cdp cdp
TODO
- Melhorar a documentação
- Lista de pastas ignoradas (exemplo: tmp, public)