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