/[papo]/papo/sql/conv/update
ViewVC logotype

Diff of /papo/sql/conv/update

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by jlenton, Tue Sep 2 00:56:36 2003 UTC revision 1.2 by jlenton, Wed Sep 3 21:41:38 2003 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2    
3    info () {
4        cat <<EOF
5    
6    Este programa una base de datos de PAPO versión 0.1.30 ó posterior.
7    
8    Como siempre, NO HAY GARANTIA DE QUE NO SE PIERDAN DATOS, y
9    recomendamos correr el script primero contra una base de datos de
10    prueba, y hacer un backup antes de convertir una base de producción.
11    
12    EOF
13    }
14    usage () {
15        echo "Usage: update [<base> [<usuario> [<maquina>]]]"
16        info
17        exit
18    }
19    
20  abort () {  abort () {
21            
22        $DB -c "INSERT INTO __papo__ (key, value) VALUES ('BROKEN_DB', '$1 $2')" >& /dev/null
23    
24      cat <<'EOF'      cat <<'EOF'
25    
26      _         _     _ _      _         _     _ _
# Line 20  Bueno, hay buenas y malas noticas. Line 39  Bueno, hay buenas y malas noticas.
39  La mala es que pasó algo inesperado que no sé precisar. Yo estaba $1  La mala es que pasó algo inesperado que no sé precisar. Yo estaba $1
40  $2, y de repente se murió.  $2, y de repente se murió.
41    
 La buena es que hiciste un backup antes, verdad?  
   
42  EOF  EOF
43        echo -n "La buena es que hiciste un backup antes."
44    
45      $DB -c "INSERT INTO __papo__ (key, value) VALUES ('BROKEN_DB', '$1 $2')" >& /dev/null      if [ "$do_backup" == "s" ]; then
46            echo
47            read -e -p "Querés restaurar el backup que hiciste cuando empezaste? [S/n]" confirm
48            case "$confirm" in
49                n*|N*)
50                    ;;
51                *)
52                    $RESTORE
53            esac
54        else
55            sleep 1
56            echo "\b, verdad?"
57        fi
58    
59      exit 1      exit 1
60  }  }
61            
62    
 usage () {  
     cat <<EOF  
 Usage: update [<base> [<usuario> [<maquina>]]]  
   
 Actualiza una base de datos de PAPO versión 0.1.30 ó posterior.  
   
 Como siempre, NO HAY GARANTIA DE QUE NO SE PIERDAN DATOS, y  
 recomendamos correr el script primero contra una base de datos de  
 prueba, y hacer un backup antes de convertir una base de producción.  
   
 EOF  
     exit  
 }  
63    
64  BASE="${1:-papo}"  BASE="${1:-papo}"
65  USER="${2:-papo}"  USER="${2:-papo}"
66  HOST="${3:-localhost}"  HOST="${3:-localhost}"
67    OPTS="-h $HOST -U $USER $BASE"
68    
69  DB="psql -q -A -t -v ON_ERROR_STOP=1 -h $HOST -U $USER $BASE"  DUMPFILE=papo_backup
70    RESTORE="pg_restore -c -Spostgres -h $HOST -U $USER -d $BASE $DUMPFILE"
71    DUMP="pg_dump -F c -f $DUMPFILE $OPTS"
72    DB="psql -q -A -t -v ON_ERROR_STOP=1 $OPTS"
73  echo '\d' | $DB > /dev/null || usage  echo '\d' | $DB > /dev/null || usage
74    
75    info
76    read -e -p "Querés hacer un backup de la base de datos? [S/n]" do_backup
77    case "$do_backup" in
78        n*|N*)
79            do_backup=n
80            ;;
81        *)
82            do_backup=s
83            #[ -f "$DUMPFILE" ] && mv --backup=t "$DUMPFILE" "${DUMPFILE}~"
84            echo -n "Haciendo el backup... "
85            #$DUMP || exit
86            echo -n "ok"
87    esac
88    
89  $DB -c 'select * from __papo__ where 1=0' >& /dev/null  $DB -c 'select * from __papo__ where 1=0' >& /dev/null
90  if [ $? -ne 0 ]; then  if [ $? -ne 0 ]; then
91    
# Line 112  while [ -d "$DIR" ]; do Line 147  while [ -d "$DIR" ]; do
147          # don't apply backups or temps --- habrá una forma mejor de hacer esto?          # don't apply backups or temps --- habrá una forma mejor de hacer esto?
148          [ "${i%[\~\#]}" != "$i" ] && continue          [ "${i%[\~\#]}" != "$i" ] && continue
149    
150            echo -n "  ${i##*(*/)}: "
151          if $DB -c "insert into __papo_patches__ (patch) values ('$i')" >& /dev/null; then          if $DB -c "insert into __papo_patches__ (patch) values ('$i')" >& /dev/null; then
             echo "  voy a aplicar $i"  
152              if [ -x "$i" ]; then              if [ -x "$i" ]; then
153                  RES=$("$i") || abort corriendo "$i"                  echo -n "corriendo... "
154                    RES=$("$i" 2>/dev/null) || abort corriendo "$i"
155                    echo -n "aplicando... "
156                  echo "$RES" | $DB >& /dev/null || abort aplicando "$i"                  echo "$RES" | $DB >& /dev/null || abort aplicando "$i"
157              else              else
158                    echo -n "aplicando... "
159                  $DB -f "$i" >& /dev/null || abort aplicando "$i"                  $DB -f "$i" >& /dev/null || abort aplicando "$i"
160              fi              fi
161              echo "  ok"              echo "ok"
162          else          else
163              echo "  no voy a aplicar $i otra vez"              echo "salteando (ya aplicado)"
164          fi          fi
165      done      done
166      if [ -f "$DIR/__NEXT_VERSION__" ]; then      if [ -f "$DIR/__NEXT_VERSION__" ]; then
# Line 133  while [ -d "$DIR" ]; do Line 171  while [ -d "$DIR" ]; do
171      $DB -c "update __papo__ set value='$PAPO_VERSION' where key='version';"      $DB -c "update __papo__ set value='$PAPO_VERSION' where key='version';"
172      DIR=${PAPO_VERSION%.+([0-9])}/$PAPO_VERSION      DIR=${PAPO_VERSION%.+([0-9])}/$PAPO_VERSION
173  done  done
174  echo "No hay versiones de la base más nuevas que $PAPO_VERSION"  echo "Todos los cambios que encontré han sido aplicados"
175    echo "Tu base ahora es versión $PAPO_VERSION."
176    if [ "$do_backup" == "s" ]; then
177        read -e -p "Querés borrar el backup? [S/n]" del_backup
178        case "$del_backup" in
179            n*|N*)
180                ;;
181            *)
182                rm -v -f "$DUMPFILE"
183        esac
184    fi

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26