Auto-completar com o Fabric

Estive fazendo algumas coisas com fabric e senti falta de um auto-completar para as tarefas disponíveis.

Aí descobri que era possível listar as tarefas usando:

fab --list

Dei uma olhada no autocomplete do Django e também encontrei este artigo que me ajudou bastante.

Juntando um pouco daqui e dali cheguei neste script que deixei junto das minhas dotfiles.

Parece coisa de preguiçoso, normalmente as tarefas têm pouco mais de 4 letras, mas tudo bem, ajudar não dói não é?

Para instalar é só chamar o script no seu .bashrc ou .bashprofile:

. /caminho/para/fab_bash_completion

Também serve de exemplo para fazer o auto-completar dos seus próprios comandos.

Startup script (init.d) for nginx

Instalei o Nginx no Suse há algum tempo e fiz isso manualmente, não sei se havia um pacote pronto, ou eu queria instalar a última versão, só sei que instalei na munheca.

Recentemente percebi (do pior jeito) que não tinha um script de inicialização instalado, a máquina foi rebootada e o Nginx não subiu.

Procurei me entender com o funcionamento dos scripts de inicialização, procurei um script pronto para o Nginx e não achei.

Então peguei um script qualquer, seguindo o modelo de parâmetros “start/stop”, adaptei para a minha necessidade e saí com o seguinte:

#! /bin/sh

# Description: Startup script for nginx.
#
# Author:  Enrico B. da Luz 

DESC="nginx"
NGINX=/usr/sbin/nginx
PIDFILE=/usr/logs/nginx.pid
CONF=/usr/conf/nginx.conf

d_start() {
  $NGINX -c $CONF || echo -en "\n$DESC already running"
}

d_stop() {
  kill -QUIT `cat $PIDFILE` || echo -en "\n$DESC not running"
}

d_restart() {
  d_stop
  sleep 2
  d_start
}

d_reload() {
  kill -HUP `cat $PIDFILE` || echo -en "\nCan't reload $DESC"
}

case "$1" in
  start)
    echo -n "Starting $DESC: $NAME"
    d_start
        echo "."
  ;;
  stop)
    echo -n "Stopping $DESC: $NAME"
    d_stop
        echo "."
  ;;
  reload)
    echo -n "Reloading $DESC configuration..."
    d_reload
        echo "."
  ;;
  restart)
    echo -n "Restarting $DESC: $NAME"
    d_restart
    echo "."
  ;;
  *)
    echo "Usage: $0 {start|stop|restart|reload}" >&2
    exit 3
  ;;
esac

exit 0

Como fiz para o Suse, segui os funcionamento dos scripts de inicialização”>padrões de caminhos e coloquei o script no “/etc/rc.d/boot.local”.

Deve funcionar para outras distribuições também, mas aconselho que se utilize um bom gerenciador de pacotes para evitar dores-de-cabeça.