-
-
Save ecylmz/897360 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
use std | |
PROGNAME=${0##*/} | |
ensuredeb wwwconfig-common | |
hascommand mysql || ensuredeb mysql-client | |
dbadmin=${WWWCONFIG_COMMON_DBADMIN:-root} | |
[ -z "$1" ] || dbname="$1" | |
[ -z "$1" ] || dbuser="$2" | |
ask_dbadmpass() { | |
asksecret "Mysql yönetici (root) parolası" | |
dbadmpass="$REPLY" | |
} | |
ask_dbname() { | |
if [ -z "$dbname" ]; then | |
ask "Veritabanı ismi (Örnek: 'moodle', 'wp')" "" must-non-empty | |
dbname="$REPLY" | |
fi | |
} | |
ask_dbuser() { | |
if [ -z "$dbuser" ]; then | |
ask "Veritabanı kullanıcısı" "$dbname" must-non-empty | |
dbuser="$REPLY" | |
fi | |
} | |
ask_dbpass() { | |
asksecret "'$dbuser' veritabanı kullanıcısı için parola" ${MKDB+""} | |
dbpass="$REPLY" | |
} | |
create_user() { | |
( | |
. /usr/share/wwwconfig-common/mysql-createuser.sh | |
if [ "$status" = "error" ]; then | |
echo >&2 "$error" | |
exit 1 | |
fi | |
) || die "'$dbuser' isimli veritabanı kullanıcısı oluşturulamadı." | |
} | |
create_db() { | |
( | |
. /usr/share/wwwconfig-common/mysql-createdb.sh | |
if [ "$status" = "error" ]; then | |
echo >&2 "$error" | |
exit 1 | |
fi | |
) || die "'$dbname' isimli veritabanı oluşturulamadı." | |
} | |
drop_user() { | |
( | |
. /usr/share/wwwconfig-common/mysql-dropuser.sh | |
if [ "$status" = "error" ]; then | |
echo >&2 "$error" | |
exit 1 | |
fi | |
) || die "'$dbuser' isimli veritabanı kullanıcısı silinemedi." | |
} | |
drop_db() { | |
( | |
. /usr/share/wwwconfig-common/mysql-dropdb.sh | |
if [ "$status" = "error" ]; then | |
echo >&2 "$error" | |
exit 1 | |
fi | |
) || die "'$dbuser' isimli veritabanı kullanıcısı silinemedi." | |
} | |
case "${PROGNAME#x-}" in | |
mk*|make*|create*) | |
if [[ ${PROGNAME#x-} == *user* ]]; then | |
cry "Mysql kullanıcısı eklenecek..." | |
ask_dbadmpass | |
ask_dbuser | |
ask_dbname | |
cry "\nBu girdilerle devam edilecek:\n\n\tVeritabanı:$dbname\n\tKullanıcı: $dbuser\n" | |
if yesno "Onaylıyor musunuz?" e; then | |
export dbadmin dbadmpass dbname dbuser | |
else | |
exit | |
fi | |
else | |
cry "Veritabanı/kullanıcı çifti oluşturulacak..." | |
ask_dbadmpass | |
ask_dbname | |
ask_dbuser | |
ask_dbpass | |
create_user | |
cry "\nBu girdilerle devam edilecek:\n\n\tVeritabanı: $dbname\n\tKullanıcı: $dbuser\n" | |
if yesno "Onaylıyor musunuz?" e; then | |
export dbadmin dbadmpass dbname dbuser dbpass | |
else | |
exit | |
fi | |
fi | |
;; | |
rm*|remove*|drop*) | |
if [[ ${PROGNAME#x-} == *user* ]]; then | |
cry "Mysql kullanıcısı silinecek..." | |
ask_dbadmpass | |
ask_dbuser | |
cry "\nDİKKAT! kullanıcı silinecek!" | |
yesno "Emin misiniz?" h || exit | |
drop_user | |
else | |
cry "Veritabanı/kullanıcı çifti silinecek..." | |
ask_dbadmpass | |
ask_dbname | |
ask_dbuser | |
cry "\nDİKKAT! Veritabanı/kullanıcı çifti silinecek!" | |
yesno "Emin misiniz?" h || exit | |
drop_db | |
drop_user | |
fi | |
;; | |
*) | |
bug "Ne yapmamı bekliyorsun?" | |
;; | |
esac |
bir kaç stayla notu:
- işlev isimleri ve parantezler arasında boşluk olmasın (eskiden ben de böyle yapardım, fena da gözükmüyor, ama bir noktada yeni stile döndüm. 19/x'teki stayla neyse onunla devam edelim)
drop_db
'de bir indent eksik
ve tabii eşleştirmeleri biraz daha esnek tutalım. "mk*
", "rm*
" ve "*user*
" gibi... @gdemir'e de yazdım bunu...
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
hiç fena gözükmüyor :-) @gdemir'e yazdıktan sonra farkettim.
mk/rm
kipi veUSERONLY
kipini iki farklı case bloğunda tespit edin demiştim ama şimdi yazdığına baktığımda şunu görüyorum. sadece kip belirlemek dışında bir de mesajlar var yani "kullanıcı ekleyeceğim/sileceğim" falan gibi. sen bunları farketmiş ve ortak işleri fonksiyonlara dönüştürmüşsün, güzel. acaba diyorum şu sondaklif/elif
bloğunu da kaldırp her şey yukarıdakicase
'mi koysak. ocase
bloğu zaten yeterli akla sahip tekrarif/elif
'te bu aklı kontrol etmeye gerek yok gibi geldi bana. umarım anlatabilmişimdir...