source: locker/bin/scripts-remove @ 459

Last change on this file since 459 was 459, checked in by andersk, 17 years ago
Things that give me nightmares, volume 459.
  • Property svn:executable set to *
File size: 5.1 KB
RevLine 
[328]1#!/bin/bash
2
3if [ "$scriptsdev" != "" -a "$scriptsdev" != "dev" ]; then
[459]4    echo "ERROR:"
5    echo "The \$scriptsdev variable is set to an invalid value."
6    echo "(The variable should not be set.)"
7    echo "Please contact scripts@mit.edu."
[328]8fi
9
10sshrun() {
[438]11    athrun scripts scripts-ssh -l "$lname" "/mit/scripts/$@" 2>/dev/null
[328]12}
13
14checksqlpass() {
15    errors=`sshrun "sql/bin$scriptsdev/test-password"`
16    if [ "$errors" != "" ]; then
17        if [ "$1" -eq 1 ]; then
18          rm -f "$lroot/.sql/my.cnf"
19        fi
20        echo
[459]21        echo "ERROR:"
[328]22        printf "$2"
23        exit 1
24    fi
25}
26attach scripts sql 2>/dev/null
27
[459]28echo "Welcome to the scripts.mit.edu uninstaller. This program will"
29echo "help you cleanly remove software that you have auto-installed."
[328]30echo
[459]31echo "Are you removing an installation from:"
32echo "1. Your personal Athena account"
33echo "2. A locker that you control (a club, a course, etc.)"
34echo "If you do not understand this question, you should answer 1."
[328]35printf "Please enter either 1 or 2: "
36read whofor
[459]37if [ "$whofor" = 1 ]; then
[328]38    lname=$USER
39    lroot=$HOME
[459]40elif [ "$whofor" = 2 ]; then
[328]41    echo
[459]42    echo "Please enter the name of the selected locker below."
[328]43    echo "(For the locker /mit/sipb, you would enter sipb.)"
44    read lname
45    lroot="/mit/$lname"
46else
47    echo
[459]48    echo "ERROR:"
49    echo "You must select either 1 or 2."
[328]50    exit 1
51fi
52attach "$lname" 2>/dev/null
53
54echo
[459]55echo "When you installed the software, you chose a URL"
56echo "that starts with http://scripts.mit.edu/~$lname/."
57echo "Please enter the full URL where this software was"
58echo "installed.  (This should correspond to a directory"
59echo "in /mit/$lname/web_scripts/.)"
60printf "%s" "URL: http://scripts.mit.edu/~$lname/"
[328]61read addrend
62
[459]63addrend=`perl -0e 'print $ARGV[0] =~ /^([\w\/-]*[\w-])\/*$/' -- "$addrend"`
[328]64if [ "$addrend" = "" ]; then
65    echo
[459]66    echo "ERROR:"
67    echo "You must enter one or more characters after ~$lname/"
68    echo "The completed address must only contain a-z, 0-9, and /."
[328]69    exit 1
70fi
71
72if [ ! -d "$lroot/web_scripts/$addrend" ]; then
73    echo
[459]74    echo "ERROR:"
75    echo "The directory $lroot/web_scripts/$addrend"
76    echo "does not exist. Please make sure that this is the"
77    echo "correct installation directory, and try again, or"
78    echo "contact scripts@mit.edu for assistance."
[328]79    exit 1
80fi
81
82echo
83
84sqlinfo=`sshrun "sql/bin$scriptsdev/get-password"`
85if [ "$sqlinfo" = "" ]; then
86    echo
[459]87    echo "You have a MySQL account but you do not have a .my.cnf file."
88    echo "If you do not remember your MySQL account password, you can change it"
89    echo "at http://sql.mit.edu using MIT certificates."
[328]90    printf "Please type your MySQL password and press [enter]: "
91    stty -echo
92    read sqlpass
93    stty echo
94    echo
95    sqlhost="sql.mit.edu"
96    sqluser=$lname
97    . "/mit/scripts/sql/bin$scriptsdev/save-password"
[459]98    checksqlpass 1 'The MySQL password that you typed appears to be incorrect.\n'
[328]99    echo
[459]100    echo "OK.  Continuing with the uninstaller..."
[328]101else
[459]102    checksqlpass 0 'The MySQL login information in your .my.cnf file\nappears to be incorrect.\n'
[328]103fi
104
105sqldb=`sshrun "sql/bin$scriptsdev/get-next-database" "$addrend"`
106if [ "$sqldb" != "${addrend}1" -a "$sqldb" != "$addrend" ]; then
107    echo
[459]108    echo "ERROR:"
109    echo "The auto-uninstaller was unable to find the appropriate"
110    echo "database to drop. Please examine the installation to"
111    echo "find the database it uses, drop the database from"
112    echo "http://sql.mit.edu/, and manually remove the $addrend"
113    echo "directory (or re-run the auto-installer). Contact"
114    echo "scripts@mit.edu if you need assistance."
[328]115    exit 1
116fi
117
[459]118echo "Removing files. Please wait..."
119echo "(This may take several seconds for large software.)"
[328]120if rm -rf "$lroot/web_scripts/$addrend"; then
[459]121    echo "The directory $lroot/web_scripts/$addrend"
122    echo "was successfully removed."
[328]123    if [ -d "$lroot/OldFiles/web_scripts/$addrend" ]; then
[459]124        echo "A one-day-old backup of the installation is"
125        echo "available from $lroot/OldFiles/web_scripts/$addrend".
[328]126    fi
127else
[459]128    echo "ERROR:"
129    echo "The directory $lroot/web_scripts/$addrend"
130    echo "could not be removed. Please ensure that you have"
131    echo "access to this directory and try again, or"
132    echo "contact scripts@mit.edu for assistance."
[328]133    exit 1
134fi
135
136echo
137if [ "$sqldb" = "${addrend}1" ]; then
138    sqldb="$lname+$addrend"
[459]139    dropped=`sshrun "sql/bin$scriptsdev/drop-database" "$sqldb"`
[328]140    if [ "$dropped" ]; then
[459]141        echo "The database $sqldb"
142        echo "was successfully removed."
[328]143        attach sql 2>/dev/null
144        if [ -f "/mit/sql/backup/$lname/$sqldb.sql.gz" ]; then
[459]145            echo "A one-day-old backup of your SQL database is"
146            echo "available in /mit/sql/backup/$lname".
[328]147        fi
148        exit
149    else
[459]150        echo "ERROR:"
151        echo "The database $lname+$addrend"
152        echo "could not be automatically removed. You can"
153        echo "try removing it from http://sql.mit.edu/,"
154        echo "or you can contact sql@mit.edu for assistance."
[328]155        exit 1
156    fi
157fi
158echo
[459]159echo "The installation in http://scripts.mit.edu/~$lname/$addrend"
160echo "has been successfully uninstalled."
Note: See TracBrowser for help on using the repository browser.