Форум: "Прочее";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
ВнизОцените пожалуйста срикпт. Насколько он "нормальный"? Найти похожие ветки
← →
@!!ex_ (2008-05-27 09:50) [0]
#!/bin/sh
proj_name="sasassault"
title="Sea&Sky Assault"
all_data="/usr/local/share/$proj_name"
all_bin="/usr/local/bin/$proj_name"
all_config="/home/$USER/.$proj_name"
cur_data="/home/$USER/.$proj_name"
cur_bin="/home/$USER/.$proj_name"
cur_config="/home/$USER/.$proj_name"
#функции выхода из скрипта
function exit_by_user()
{
echo "
Установка преравана пользователем" >&2
exit 0
}
function exit_by_file_not_exists_error()
{
echo "
Установка преравана скриптом из-за ошибки(файл не существует)" >&2
exit 1
}
function exit_by_you_are_not_root_error()
{
echo "
Установка преравана скриптом из-за ошибки(необходимы права рута)" >&2
exit 1
}
function exit_by_io_error()
{
echo "
Установка преравана скриптом из-за ошибки(ошибка доступа к файлу)" >&2
exit 1
}
#функции проверки состояний
function file_exists
{
if [ -e "$1" ] ; then
echo "$1 : существует" >&2
return 0
else
echo "$1 : не существует" >&2
return 1
fi
}
function ask
{
local result=
echo "$1" >&2
while [ "$result" = "" ]; do
read input_value
if [ $input_value = "exit" ]; then
exit_by_user
result=0
else
if [ $input_value = $2 ]; then
result=0
else
if [ $input_value = $3 ]; then
result=1
else
echo "Ввод не корректен, пожалуйста введите корректное значение(или exit для выхода):" >&2
result=
fi
fi
fi
done
return $result
}
function test_exists
{
if file_exists $1; then
return 0
else
echo "Проверка провалилась." >&2
exit_by_file_not_exists_error
return 1
fi
}
#функции разных установок
function try_make
{
if [ -e "$1" ]; then
echo "Путь существует $1" >&2
else
echo "Пытаемся создать $1" >&2
if mkdir $1; then
echo "$1 успешно создан" >&2
else
exit_by_io_error
fi
fi
}
function try_copy
{
echo "Пытаемся скопировать $2 в $1/$2" >&2
if cp $2 "$1/$2"; then
echo "$2 успешно скопирован" >&2
else
exit_by_io_error
fi
}
function try_set_exec
{
echo "Пытаемся установить полные права на $1" >&2
if chmod 755 $1; then
echo "$1 права успешно установленны" >&2
else
exit_by_io_error
fi
}
function install_to
{
install_bin=$1
install_data=$2
install_config=$3
echo "" >&2
echo "Проверяем пути установки" >&2
try_make $install_bin
try_make $install_data
try_make $install_config
echo "Копируем файлы" >&2
try_copy $install_bin "Engine"
try_copy $install_data "Data.dpg"
echo "Устанавливаем права на запуск" >&2
try_set_exec "$install_bin/Engine"
echo "Создаем файл конфига" >&2
if [ -e "$install_config/paths.cfg" ]; then
rm "$install_config/paths.cfg"
fi
echo "$install_bin
$install_data
$install_config" >"$install_config/paths.cfg"
echo "Установка успешно завершена" >&2
if ask "Создать ярлык на рабочем столе для текущего пользователя?(y/n)" "y" "n"; then
ln -s "$install_bin/Engine" "/home/$USER/Desktop/$title"
fi
}
function install_for_all_users()
{
if [ $(id -u) != "0" ]; then
echo "Вы должны быть рутом, для этого типа установки" >&2
exit_by_you_are_not_root_error
fi
echo "Установка игры для всех пользователей." >&2
echo "Исполняемый файл игры будет установлен в $all_bin" >&2
echo "Данные игры будут установлены в $all_data" >&2
echo "Конфиг игры будут установлен всем пользователям" >&2
if ask "Продолжить?(y/n)" "y" "n"; then
install_to $all_bin $all_data $all_config
else
exit_by_user
fi
}
function install_for_current_user()
{
echo "Установка игры только для текущего пользователя." >&2
echo "Исполняемый файл игры будет установлен в $cur_bin" >&2
echo "Данные игры будут установлены в $cur_data" >&2
echo "Конфиг игры будут установлен в $cur_config" >&2
if ask "Продолжить?(y/n)" "y" "n"; then
install_to $cur_bin $cur_data $cur_config
else
exit_by_user
fi
}
echo "
Вы запустили программу установки игры $title.
Программа установки задаст несколько простых вопросов, и установит игру автоматически.
Вы всегде можете набрать exit для выхода из программы устанвоки.
" >&2
#Тестирование архива
echo "Тестирование архива." >&2
test_exists "Engine"
test_exists "Data.dpg"
#
echo "
Выберите тип установки:" >&2
echo "1 - для текущего пользователя" >&2
echo "2 - для всех пользователей(рекомендуется)" >&2
if ask "Введите 1 или 2" "1" "2"; then
install_for_current_user
else
install_for_all_users
fi
← →
DiamondShark © (2008-05-27 11:19) [1]На таком угребанском языке не может быть "нормальных" скриптов по определению.
← →
Style © (2008-05-27 11:25) [2]это не изыг - это shell-скрипт.
Только че тут оценивать - йа не понял.
Ладна оценил - 3 бакса, не больше.
← →
__mirage (2008-05-27 14:48) [3]>[0] @!!ex_ (2008-05-27 09:50:00)
во-первых, во-вторых и далее по всем числам: никакого русского в скриптах быть НЕ ДОЛЖНО. нигде и никогда.
далее. unix-way — не вякать, если не просят. а у тебя оно вякает на каждом шагу. непорядок. сделать опцию «-v», по умолчанию выводить только вопросы.
дальше не читал. %-)
---
Understanding is not required. Only obedience.
← →
@!!ex_ (2008-05-27 20:55) [4]
> DiamondShark © (27.05.08 11:19) [1]
>
> На таком угребанском языке не может быть "нормальных" скриптов
> по определению.
А куда деватся? Какие варианты....
> Style © (27.05.08 11:25) [2]
>
> это не изыг - это shell-скрипт.
> Только че тут оценивать - йа не понял.
НАсколько он корректен. Я о том, как писать скрипыт у3знал только вчера... Поэтому есть сомнения.
> никакого русского в скриптах быть НЕ ДОЛЖНО. нигде и никогда.
Понял. Исправлю.
> алее. unix-way — не вякать, если не просят. а у тебя оно
> вякает на каждом шагу. непорядок.
В смысле? То что текста много выводит? Так hp-lip при установке тоже дофига комментариев показывает.
> сделать опцию «-v», по умолчанию выводить только вопросы.
А что должна эта опция делать?
← →
Ослик (2008-05-27 21:14) [5][4] @!!ex_ (27.05.08 20:55)
> В смысле? То что текста много выводит?
Ссылка не совсем в тему, но, во-первых интересно, во-вторых небольшой кусочек оттуда как-раз в тему:
Возьмём один простой пример, существует основная ценность в культуре Unix, которую Рэймонд назвал "Молчание - золото", что означает, что программа которая сделала точно то, что вы сказали ей сделать успешно, не должна выдавать никаких выходных данных. Это не имеет значения, что вы набрали 300 символов в командной строке, чтобы создать файловую систему, или скомпилировать и установить сложный кусок программы, или послать ракету ракету с космонавтами на Луну. Если это получилось, то общепринято просто ничего не выводить. Пользователь должен заключить из появления следующего приглашения в командной строке, что все должно быть в порядке.
http://russian.joelonsoftware.com/Articles/Biculturalism.html
← →
@!!ex_ (2008-05-27 21:23) [6]
> Ослик (27.05.08 21:14) [5]
понял....
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c