Скрипт для обновления сборника ПО для Windows

Материал из Linux Wiki
Перейти к: навигация, поиск

Скрипт для формирования и обновления Сборника свободного и бесплатного ПО для Windows.

Задачи скрипта:

  • создание оговоренной структуры каталогов сборника
  • проверка наличия новых версий программы
  • закачка новых версий программы в отведенный для нее каталог
  • удаление устаревших версий ПО
  • создание файла контрольных сумм (при помощи утилиты cfv) для каждого каталога и его обновление при обновлении находящихся в каталогах файлов.
  • в процессе работы скрипт должен выводить поясняющие сообщения ("Нет обновлений для $softname", "Доступна новая версия для $softname" и т.п.)
ToDo: Создать скрипт, описывающий весь сборник софта

#!/bin/bash
 
d='echo #'
prefix='winsoft'
 
hrefer() {
grep -oE 'href=[\"'\'']?https?://[a-zA-Z0-9\?\=\&\.\/_\-]+' |
sed 's/href=[\"'\'']//g' | head -n1
}
 
message() {
echo "${1}" "${2}"
}
 
 
############ Openoffice.org
openofficepath="${prefix}/office/suite/OpenOffice.org/"
openofficelink="$(wget -q 'http://download.openoffice.org/other.html#ru' -O- | grep 'winwjre&lang=ru' | hrefer)"
openofficeversion="$(grep -oE 'version=[\.0-9]{1,}' <<< "${openofficelink}" | sed 's/version\=//g')"
 
message "Последняя версия OpenOffice.org - " "${openofficeversion}"
 
mkdir -p "${openofficepath}"
${d} wget "${openofficelink}" -P "${openofficepath}"
 
#######################################################
 
############ Blender x86
 
blenderpath="${prefix}/design/3d/blender/x86/"
blenderlink="$(wget -q http://www.blender.org/download/get-blender/ -O- | grep -m1 'windows' | hrefer)"
blenderversion="$(grep -oE 'blender-[0-9\.a-z]{1,}' <<< "${blenderlink}" | sed 's/blender\-//g')"
 
message "Последняя версия Blender x86 - " "${blenderversion}"
 
mkdir -p "${blenderpath}"
${d} wget "${blenderlink}" -P "${blenderpath}"
 
#######################################################
 
############ Blender x86-64
 
blenderfpath="${prefix}/design/3d/blender/x86-64/"
blenderflink="$(wget -q http://www.blender.org/download/get-blender/ -O- | grep -m1 'win64' | hrefer)"
blenderfversion="$(grep -oE 'blender-[0-9\.a-z]{1,}' <<< "${blenderflink}" | sed 's/blender\-//g')"
 
message "Последняя версия Blender x86-64 - " "${blenderfversion}"
 
mkdir -p "${blenderfpath}"
${d} wget "${blenderflink}" -P "${blenderfpath}"
 
#######################################################
 
############ GIMP x86
 
gimppath="${prefix}/design/photoeditors/gimp/x86/"
gimplink="$(wget -q 'http://gimp-win.sourceforge.net/stable.html' -O- | grep 'i686' | hrefer | sed 's/\?use_mirror\=//g')"
gimpversion="$(grep -oE 'gimp-[0-9\.]{1,}' <<< "${gimplink}" | sed 's/gimp\-//g')"
 
message "Последняя версия GIMP - " "${gimpversion}"
 
mkdir -p "${gimppath}"
${d} wget "${gimplink}" -P "${gimppath}"
 
#######################################################
 
############ GIMP x86-64
 
gimpfpath="${prefix}/design/photoeditors/gimp/x86-64/"
gimpflink="$(wget -q 'http://gimp-win.sourceforge.net/stable.html' -O- | grep 'x64' | hrefer | sed 's/\?use_mirror\=//g')"
gimpfversion="$(grep -oE 'gimp-[0-9\.]{1,}' <<< "${gimpflink}" | sed 's/gimp\-//g')"
 
message "Последняя версия GIMP x86-64 - " "${gimpfversion}"
 
mkdir -p "${gimpfpath}"
${d} wget "${gimpflink}" -P "${gimpfpath}"
 
#######################################################
 
############ Inkscape
inkscapepath="${prefix}/design/vector/inkscape/x86/"
inkscapelink="$(wget -q 'http://www.inkscape.org/download/?lang=ru' -O- | grep -o '.*exe installer' | hrefer)"
inkscapeversion="$(grep -oE 'Inkscape\-[\.0-9]{1,}' <<< "${inkscapelink}" | sed 's/Inkscape\-//g' | sed 's/\.$//g')"
 
message "Последняя версия Inkscape - " "${inkscapeversion}"
 
mkdir -p "${inkscapepath}"
${d} wget "${inkscapelink}" -P "${inkscapepath}"
 
#######################################################
 
############ Audacity
audacitypath="${prefix}/media/audio/editors/audacity/"
audacitylink="$(wget -q 'http://audacity.sourceforge.net/download/beta_windows' -O- | grep -m1 'Windows 2000/XP' | hrefer)"
audacityversion="$(grep -oE 'audacity\-win\-unicode\-[\.0-9]{1,}' <<< "${audacitylink}" | sed 's/audacity\-win\-unicode\-//g' | sed 's/\.$//g')"
 
message "Последняя версия Audacity - " "${audacityversion}"
 
mkdir -p "${audacitypath}"
${d} wget "${audacitylink}" -P "${audacitypath}"
 
#######################################################
 
############ smplayer
smplayerpath="${prefix}/media/video/players/"
smplayerlink="$(wget -q 'http://smplayer.sourceforge.net/downloads.php?tr_lang=ru' -O- | grep -E 'win32\.' | hrefer)"
smplayerversion="$(grep -oE 'smplayer\-[\.0-9]{1,}' <<< "${smplayerlink}" | sed 's/smplayer\-//g')"
 
message "Последняя версия SMplayer - " "${smplayerversion}"
 
mkdir -p "${smplayerpath}"
${d} wget "${smplayerlink}" -P "${smplayerpath}"
 
#######################################################
 
############ stardict
stardictpath="${prefix}/office/dictionary/stardict/"
stardictlink="$(wget -q 'http://stardict.sourceforge.net/download.php' -O- | grep '\.exe' | hrefer)"
stardictversion="$(grep -oE 'stardict\-[\.0-9]{1,}' <<< "${stardictlink}" | sed 's/stardict\-//g' | sed 's/\.$//g')"
 
message "Последняя версия Stardict - " "${stardictversion}"
 
mkdir -p "${stardictpath}"
${d} wget "${stardictlink}" -P "${stardictpath}"
 
#######################################################