forked from alkorgun/azimuth3imager-linux
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathazimuth3imager
executable file
·89 lines (63 loc) · 2.7 KB
/
azimuth3imager
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/bin/bash
# Azimuth 3 image flasher by Al Korgun <korgun@tbdd.ru>
a3filename=azimuth3image
get_usb() {
find /dev/disk/by-id -type l ! -name "*-part*"
}
gui() {
zenity "$@" 2> /dev/null
}
exit_if_not_zero() {
if [ $? -ne 0 ]; then
if [ "$@" ]; then
gui --info --title="Аварийное завершение работы" --text="$@"
exit 1
else
exit 0
fi
fi
}
# if [ $( id -u ) -ne 0 ]; then
# gui --info --title="Завершение работы" --text="Для корректной работы требуются права суперпользователя."
# exit 2
# fi
drives=( $( get_usb ) )
while [ ! "$drives" ]; do
gui --error --title="USB-носитель не обнаружен" \
--text="Вставьте носитель в USB-порт, подождите несколько секунд и нажмите \"OK\"."
exit_if_not_zero
drives=( $( get_usb ) )
done
drives_gui=()
for (( i = 0; i < ${#drives[*]}; ++i )); do
dev=$( readlink -e "${drives[i]}" )
drives_gui[i*4]=$( [ "$i" == 0 ] && echo "TRUE" || echo "FALSE" )
drives_gui[i*4 + 1]=$dev
drives_gui[i*4 + 2]=$( lsblk -n -l --output NAME,SIZE,TYPE | sed -rn "s/$( basename $dev )\s*(.*)\s*disk/\1/p" )
drives_gui[i*4 + 3]=$( basename "${drives[i]}" | cut -d "-" -f 2 | sed "s/_/ /g" )
done
burn=$(
gui --list --radiolist --width=640 --height=360 --title="Выбор USB-носителя" \
--text="Выберите носитель для записи образа" \
--column="Выбор" --column="Устройство" --column="Размер" --column="Идентификатор" \
--print-column="2" \
"${drives_gui[@]}"
)
exit_if_not_zero
a3image=$( gui --file-selection --file-filter="*.a3i" --title="Выберите образ Азимут 3" )
exit_if_not_zero
filesize=$( /usr/local/bin/a3i-getsize "$a3image" )
exit_if_not_zero "Проблема с извлечением размера образа из контейнера, вероятно он повреждён."
gui --question --title="Подтверждение записи образа" \
--text="Вы уверены, что хотите записать образ <b>$a3image</b> ($(( filesize / 1048576 ))mb) на устройство <b>$burn</b>?"
exit_if_not_zero
lsblk -n -l --output NAME,TYPE,MOUNTPOINT | sed -rn "s/$( basename $burn )[0-9]*\s*part\s*(.*)/\1/p" | while read mount_point; do
if [ "$mount_point" ]; then
umount $mount_point
exit_if_not_zero "Не удалось размонтировать все разделы носителя."
fi
done
pkexec /usr/local/bin/a3i-extract "$a3image" "$burn" | \
gui --progress --auto-kill --percentage=0 --title="Прогресс" \
--text="Происходит запись..."
sync