Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #Autor: Fitorec
- #Descripción:
- # Descarga información de un proyecto administrado con SVN, Actualiza el proyecto SVN,
- # muestra la información a partir de parametros, ideal para mostrar con el conky por tal
- # motivo arranca el conky con un archivo de configuración.
- # Lista de opciones:
- # -start: inicia el conky.
- # -update: Actualiza los archivos.
- # -revision: Muestra el número de la ultima revisión.
- # -author: Muestra el autor de la ultima revisión.
- # -date: Muestra la fecha de la ultima revisión.
- # -msg N: Imprime en un párrafo de longitud N mensaje de la ultima revisión.
- # lista de errores:
- # ERROR 1: Falta de argumentos
- # ERROR 2: Falta del argumento longitud(N) para mostrar el mensaje(opcion -msg).
- # ERROR 3: La opción es incorrecta
- #
- #======================================CONFIGURAME========================================
- #CONFIGURAR las 2 variables a utilizar:
- #Ruta del directorio SVN donde se encuentra mi copia del proyecto
- export svnPath='/var/www/proyectos/proyectoX/'
- #Ruta donde se va a descargar el archivo
- export xmlfile='/home/fitorec/.config/conky/datos/proyectoX.xml'
- #Ruta de mi archivo de configuracion del conky.
- export conkyrc='/home/fitorec/.config/conky/proyectoXconkyrc'
- #=======================================REVISAME==========================================
- #De aquí en adelante se recomienda no modificar, pero si echarle un ojo ';¬D
- #opciones en general
- function msg_opciones {
- echo Lista de opciones
- echo ========================================================
- echo -help: Muestra este menu.
- echo -start: inicia el conky.
- echo -update: Actualiza los archivos.
- echo -revision: Muestra el número de la ultima revisión.
- echo -author: Muestra el autor de la ultima revisión.
- echo -date: Muestra la fecha de la ultima revisión.
- echo -msg N: Imprime en un párrafo de longitud N mensaje de la ultima revisión.
- }
- #La opcion start y update descargan la información a mostrar en el
- # archivo $xmlfile esta información tiene la siguiente forma forma:
- #---------------- archivo $xmlfile ----------------------------------
- #<?xml version="1.0"?>
- #<log>
- #<logentry
- # revision="139">
- #<author>fitorec</author>
- #<date>2011-01-03T06:28:34.412370Z</date>
- #<msg>se mejoro el script del archivo de traducción</msg>
- #</logentry>
- #</log>
- #
- #Más Funciones a utilizar.
- #===============
- #Actualiza el repositorio del proyecto.
- function update {
- #Revisamos si existe conexión a Internet
- ping google.com -c 2
- if [ $? -eq 0 ]
- then
- #realizamos una actualización del proyecto.
- svn update $svnPath
- #Descarga la información del ultimo cambio en un archivo XML
- svn log -r HEAD --xml -g $svnPath > $xmlfile
- fi
- }
- #Muestra el número del ultimo cambio.
- function revision {
- cat $xmlfile | grep -E "\s*revision\=\"[0-9]*\">" | sed -r "s/\s*revision\=\"([0-9]*)\">/\1/"
- }
- #Muestra el autor del ultimo cambio
- function author {
- cat $xmlfile | grep -E "^<author>.*$" | sed -r "s/<author>(.*)<\/author>/\1/"
- }
- #obtenemos la fecha del ultimo cambio:
- function date {
- cat $xmlfile | grep -E "^<date>.*$" | sed -r "s/^<date>([0-9]{4}-[0-9]{2}-[0-9]{2}).*([0-9]{2}:[0-9]{2}).*<\/date>$/\1 \2/"
- }
- #Muestra el msg en un parrafo de longitud $1 mensaje de la ultima revisión.
- function msg {
- msg=`cat $xmlfile | grep -E "^<msg>.*$" | sed -r "s/<msg>(.*)<\/msg>/\1/"`
- while [ "$msg" != "" ];
- do
- echo $msg | cut -c 1-$1
- msg=`echo $msg | cut -c $1-`
- done;
- }
- #Actualiza el proyecto e inicia el conky
- function start {
- #primero nos esperamos(30s) un rato para que la máquina se inicie y se conecte a Internet.
- sleep 30
- update
- #inicializamos el conky.
- conky -c $conkyrc
- }
- #inicio de la lógica de control
- ########################################################################################3
- #si no existe argumentos error!
- if [ $# -eq 0 ]
- then
- echo "ERROR 1: debe insertar un argumento!."
- msg_opciones
- exit 1
- fi
- #realizamos un case al argumento $1
- case $1 in
- -start)
- start
- ;;
- -update)
- update
- ;;
- -update)
- update
- ;;
- -revision)
- revision
- ;;
- -author)
- author
- ;;
- -date)
- date
- ;;
- -msg)
- if [ $# -ne 2 ]
- then
- echo "ERROR 2: debe insertar un valor numérico, p.e.: ./$0 -msg 20"
- msg_opciones
- exit 2
- fi
- msg $2
- ;;
- *)
- echo "ERROR 3: La opción que inserto es incorrecta"
- msg_opciones
- exit 3
- ;;
- esac
- exit 0
Add Comment
Please, Sign In to add comment