Commit 5a75d99f authored by Roman Alifanov's avatar Roman Alifanov

big refactoring

parent 57ecc3c7
......@@ -9,6 +9,8 @@ EPMGPI_TMP=$(mktemp -d -t epmgpi.XXXXXXX)
# shellcheck disable=SC2064
trap "clean_up_tmp $EPMGPI_TMP" EXIT
EPMGPI_LOG_FILE="$EPMGPI_TMP/epmgpi.log"
# Дефолтные параметры yad
YAD_DEFAULT="/usr/bin/yad --window-icon=epmgpi --title=epmgpi --class=epmgpi"
......@@ -36,42 +38,50 @@ repackq() {
--button="yad-yes:0" \
--button="yad-no:1"
ret=$?
local ANSWER=$?
if [[ $ret -eq 0 ]]; then
EEPM_ARGS="--auto --repack -i"
if [[ $ANSWER -eq 0 ]]; then
local EEPM_ARGS="--auto --repack -i"
else
EEPM_ARGS="--auto -i"
local EEPM_ARGS="--auto -i"
fi
else
EEPM_ARGS="--auto -i"
local EEPM_ARGS="--auto -i"
fi
echo "Аргументы epm: $EEPM_ARGS"
echo "$EEPM_ARGS"
}
# GUI селектор пакетов
pkgselection() {
PKG_PATH=$($YAD_DEFAULT --file --file-filter="${VALID_FILE_EXTENSIONS[*]}")
echo "$PKG_PATH"
$YAD_DEFAULT --file --file-filter="${VALID_FILE_EXTENSIONS[*]}"
}
yad_log_view() {
$YAD_DEFAULT --title="Лог ошибки" --no-buttons --text-align=center \
--text-info --show-uri --wrap --width=1200 --height=550 --uri-color=red \
--filename="$EPMGPI_TMP/epmgpi.log"
--filename="$EPMGPI_LOG_FILE"
rm "$EPMGPI_LOG_FILE"
exit 1
}
epmgpi_logging() {
tee -a "$EPMGPI_LOG_FILE"
}
# Проверка, пакет ли файл
hack_for_paths_with_spaces() {
PKG_PATH="$1"
local PKG_NAME
PKG_NAME=$(basename -- "$PKG_PATH" | tr -d ' ')
PKG_SYMB_LINK_PATH="$EPMGPI_TMP/$PKG_NAME"
local PKG_SYMB_LINK_PATH="$EPMGPI_TMP/$PKG_NAME"
ln -s "$PKG_PATH" "$PKG_SYMB_LINK_PATH"
PKG_PATH=$PKG_SYMB_LINK_PATH
echo "$PKG_SYMB_LINK_PATH"
}
# Установка пакета
installpkg() {
local PKG_PATH="$1"
local EEPM_ARGS="$2"
# Pkexec для выполнения от рута
# Тут есть костыль, который каждую строку с помощью sed делает с решеткой. YAD воспринимает только так.
(
......@@ -87,7 +97,7 @@ installpkg() {
;;
100)
ntf_error "Пакет не установлен. Команда завершилась с ошибкой."
echo "!!! ОШИБКА EPMGPI" >> "$EPMGPI_TMP/epmgpi.log"
echo "!!! ОШИБКА EPMGPI" >> "$EPMGPI_LOG_FILE"
;;
126)
......@@ -96,11 +106,11 @@ installpkg() {
;;
*)
ntf_error "Пакет не установлен."
echo "!!! ОШИБКА EPMGPI" >> "$EPMGPI_TMP/epmgpi.log"
echo "!!! ОШИБКА EPMGPI" >> "$EPMGPI_LOG_FILE"
;;
esac
) | tee -a "$EPMGPI_TMP/epmgpi.log" | sed -u 's/^/# /' | $YAD_DEFAULT \
) | epmgpi_logging | sed -u 's/^/# /' | $YAD_DEFAULT \
--title="Установка пакета" \
--progress --width=800 --height=500 \
--enable-log="Лог" --log-expanded --log-on-top \
......@@ -116,26 +126,30 @@ show_help() {
}
main() {
local PKG_PATH
local FILE_PATH
FILE_PATH="$(realpath "$1")"
# Проверка и вызов окна выбора файлов, если PKG_PATH не установлен
if [[ -z "$PKG_PATH" ]]; then
if [[ -z "$FILE_PATH" ]]; then
echo "Путь к пакету не указан. Вызов функции выбора пакета..."
pkgselection
FILE_PATH=$(pkgselection)
fi
if [ ! -f "$PKG_PATH" ]; then
echo "Ошибка: $PKG_PATH - это не файл."
if [ ! -f "$FILE_PATH" ]; then
echo "Ошибка: $FILE_PATH - это не файл."
exit 1
fi
if echo "$PKG_PATH" | grep -q " "; then
if echo "$FILE_PATH" | grep -q " "; then
echo "Путь к пакету содержит пробелы"
hack_for_paths_with_spaces
PKG_PATH=$(hack_for_paths_with_spaces "$FILE_PATH")
else
PKG_PATH=$FILE_PATH
fi
repackq
installpkg
installpkg "$PKG_PATH" "$(repackq)"
if grep -q "!!! ОШИБКА EPMGPI" "$EPMGPI_TMP/epmgpi.log" ; then
if grep -q "!!! ОШИБКА EPMGPI" "$EPMGPI_LOG_FILE" ; then
yad_log_view
fi
}
......@@ -153,10 +167,9 @@ while [[ $# -gt 0 ]]; do
;;
*)
echo "Переданы аргументы: $1"
PKG_PATH="$(realpath "$1")"
main "$(realpath "$1")" | epmgpi_logging
shift
;;
esac
done
main
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment