Этот пост является прямым продолжением двух предыдущих постов (конкретно этого и этого) про бэкап списка расширений и в целом про редактор исходного кода VSCodium.
В прошлый раз при резервировании списка расширений я упомянул, что не проводил тестирование скрипта PowerShell в среде операционной системы Linux. Да и какой смысл тащить ps1 в окружение, где уже существует прекрасный самобытный язык автоматизации.
В итоговом варианте sh-скрипт для резервирования и восстановления расширений VSCodium выглядит так:
#!/bin/bash
# sudo chmod +x /scripts/vscodium_extensions_backup.sh
# Имя файла для сохранения #
extfile="vscodium_extensions.backup"
# Команда для вызова VSCodium #
codiumcommand="/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=codium --file-forwarding com.vscodium.codium"
# Получение списка расширений #
function ext_backup()
{
if $codiumcommand --list-extensions > "$extfile"; then
echo -e "Список расширений успешно сохранён в $extfile."
return 0
else
echo -e "Не удалось сохранить список расширений."
return 1
fi
}
# Восстановление расширений #
function ext_recovery()
{
if [[ ! -s $extfile ]]; then
echo -e "Файл $extfile пуст."
return 1
fi
while IFS= read -r ext; do
$codiumcommand --install-extension "$ext" --force
echo -e "Расширение $ext восстановлено."
done < "$extfile"
return 0
}
# Копирование или восстановление расширений VSCodium #
if [[ -f $extfile ]]; then
if ext_recovery; then
echo -e "Восстановление завершено!"
else
echo -e "Во время извлечения списка расширений что-то пошло не так..."
fi
else
if ext_backup; then
echo -e "Файл $extfile успешно создан."
fi
fi
echo "Работа скрипта завершена..."
Тестирование работы скрипта я проводил на операционной системе Linux Mint 22 Wilma. И, само собой, переменная codiumcommand у меня содержит обращение к flatpak. Если Ваша версия операционки знакома с командой codium без использования посредников и дополнительных окружений — замените значение переменной codiumcommand на корректную команду.
И, кстати, хочу разочаровать — псевдонимы команд (которые alias) не работают в скриптах. С этим просто надо смириться.