Last active
April 24, 2019 11:49
-
-
Save maximal/db20551d9645656402ed to your computer and use it in GitHub Desktop.
Обновление тестовых версий (EAP) сред разработки компании JetBrains для Linux
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
## | |
# Обновление тестовых версий (EAP) сред разработки компании JetBrains для Linux. | |
# В данном случае скачивается PhpStorm и GoLand, но скрипт подойдёт для любой среды разработки, | |
# выкладываемой компанией JetBrains в EAP. | |
# | |
# | |
# @author MaximAL | |
# @since 2019-04-24 Добавил опцию командной строки `no-eap` для получения стабильных версий вместо EAP. | |
# @since 2019-03-18 Сделал получение релизов через официальное JSON API. | |
# @since 2015-08-27 Поменял паттерн `fileRegex` под текущие реалии. | |
# @since 2015-04-10 Первая версия | |
# @copyright © MaximAL 2015—2019 | |
## | |
## Продукты: PhpStorm, GoLand | |
products=('PS' 'GO') | |
# Базовая директория; как правило, `/opt` | |
baseDir='/opt' | |
# Ссылка на JSON с релизами | |
if [[ "$1" == "no-eap" ]]; then | |
releaseUrl="https://data.services.jetbrains.com/products/releases?latest=false&code=" | |
else | |
releaseUrl="https://data.services.jetbrains.com/products/releases?latest=false&type=eap&code=" | |
fi | |
# Регулярное выражение для ссылки на новую версию. | |
fileRegex='https?://[^\"]+\.tar\.gz' | |
# Поехали! | |
echo "Updating JetBrains IDEs…" | |
for product in "${products[@]}"; do | |
echo "Product: $product" | |
productUrl="$releaseUrl$product" | |
echo " Quering $productUrl…" | |
fileUrl=`wget -q -O - "$productUrl" | grep -Po "$fileRegex" | head -n1` | |
if [ -z $fileUrl ]; then | |
echo " URL $productUrl does not contain link like $fileRegex." | |
exit 1 | |
fi | |
echo " File URL: $fileUrl" | |
echo -n " Fetching directory name…" | |
dirName=`wget -q -O - "$fileUrl" | tar tz | head -n1 | grep --max-count=1 -Po '[^/]+' | head -n1` | |
echo -e "\b: $dirName" | |
if [ -e "$baseDir/$dirName" ]; then | |
echo " Directory $baseDir/$dirName already exists. Seems like you are using last version of $product." | |
else | |
linkName=`echo $dirName | grep -Po '^[^-]+'` | |
cd "$baseDir" | |
echo ' Getting archive…' | |
wget -O - "$fileUrl" | tar xzp | |
echo " Setting symbolic link…" | |
rm -f "$linkName" | |
ln -s "$dirName" "$linkName" | |
echo " Update done:" | |
echo " Directory: $baseDir/$dirName/" | |
echo " Symlink: $baseDir/$linkName" | |
fi | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@Mausglov, чуток поменял паттерн
$fileRegex
под текущие реалии.