-
-
Save eksiscloud/36372701400eacb63e6177568db595b2 to your computer and use it in GitHub Desktop.
Semi-automatic Mastodon updater for nightly build
This file contains hidden or 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
#!/usr/bin/env bash | |
# | |
# Mastodon update script | |
# v3 (2024.02.18) | |
# forked | |
# | |
# Changelog | |
# * v1 - initial version | |
# * v2 - added mastodon-bird-ui | |
# * v3 - added import of temporary email domains | |
# | |
# chmod 0700 script.sh | |
# you have to use git checkout main before this script | |
# | |
cd /home/mastodon/live/ | |
# revert changes | |
git restore ./config/themes.yml | |
# I don't speak git, I don't know how to this automatically and I'm too scary to use git reset --hard, so: | |
git stash save "5000char" | |
# git | |
git pull | |
# Cleaning stash before I forget it | |
git stash clear | |
# extract version | |
mastodon_prerelease="nightly.$(git show -s --date=format:"%Y-%m-%d" --format="%cd" HEAD)" | |
mastodon_prerelease_exists=$(cat ./.env.production | grep MASTODON_VERSION_PRERELEASE= | wc -l) | |
if [ "$mastodon_prerelease_exists" -ne "0" ]; then | |
sed -i~ "/^MASTODON_VERSION_PRERELEASE=/s/=.*/=$mastodon_prerelease/" ./.env.production | |
else | |
echo "MASTODON_VERSION_PRERELEASE=$mastodon_prerelease" >> ./.env.production | |
fi | |
# install mastodon-bird-ui | |
rm -rf ./app/javascript/styles/mastodon-bird-ui/ | |
mkdir -p ./app/javascript/styles/mastodon-bird-ui/ | |
wget --no-cache https://raw.githubusercontent.com/ronilaukkarinen/mastodon-bird-ui/main/layout-single-column.css -O app/javascript/styles/mastodon-bird-ui/layout-single-column.scss | |
wget --no-cache https://raw.githubusercontent.com/ronilaukkarinen/mastodon-bird-ui/main/layout-multiple-columns.css -O app/javascript/styles/mastodon-bird-ui/layout-multiple-columns.scss | |
sed -i 's/theme-contrast/theme-mastodon-bird-ui-contrast/g' app/javascript/styles/mastodon-bird-ui/layout-single-column.scss | |
sed -i 's/theme-mastodon-light/theme-mastodon-bird-ui-light/g' app/javascript/styles/mastodon-bird-ui/layout-single-column.scss | |
sed -i 's/theme-contrast/theme-mastodon-bird-ui-contrast/g' app/javascript/styles/mastodon-bird-ui/layout-multiple-columns.scss | |
sed -i 's/theme-mastodon-light/theme-mastodon-bird-ui-light/g' app/javascript/styles/mastodon-bird-ui/layout-multiple-columns.scss | |
echo -e "@import 'contrast/variables';\n@import 'application';\n@import 'contrast/diff';\n@import 'mastodon-bird-ui/layout-single-column.scss';\n@import 'mastodon-bird-ui/layout-multiple-columns.scss';" > app/javascript/styles/mastodon-bird-ui-contrast.scss | |
echo -e "@import 'mastodon-light/variables';\n@import 'application';\n@import 'mastodon-light/diff';\n@import 'mastodon-bird-ui/layout-single-column.scss';\n@import 'mastodon-bird-ui/layout-multiple-columns.scss';" > app/javascript/styles/mastodon-bird-ui-light.scss | |
echo -e "@import 'application';\n@import 'mastodon-bird-ui/layout-single-column.scss';\n@import 'mastodon-bird-ui/layout-multiple-columns.scss';" > app/javascript/styles/mastodon-bird-ui-dark.scss | |
echo "mastodon-bird-ui-dark: styles/mastodon-bird-ui-dark.scss" >> config/themes.yml | |
echo "mastodon-bird-ui-light: styles/mastodon-bird-ui-light.scss" >> config/themes.yml | |
echo "mastodon-bird-ui-contrast: styles/mastodon-bird-ui-contrast.scss" >> config/themes.yml | |
# Changing to 5000 chars limit | |
sed -i 's/MAX_CHARS = 500/MAX_CHARS = 5000/' /home/mastodon/live/app/validators/status_length_validator.rb | |
# gems and node packages | |
bundle install | |
yarn install | |
# DB/pre | |
SKIP_POST_DEPLOYMENT_MIGRATIONS=true RAILS_ENV=production bundle exec rails db:migrate | |
# Assets | |
RAILS_ENV=production bundle exec rails assets:clean | |
RAILS_ENV=production bundle exec rails assets:clobber | |
RAILS_ENV=production bundle exec rails assets:precompile | |
# Services reboot 1 | |
#sudo service mastodon-sidekiq restart | |
#sudo service mastodon-streaming restart | |
#sudo service mastodon-web restart | |
read -p "systemctl restart mastodon* on other screen and continue pressing enter" | |
# DB/post | |
RAILS_ENV=production bundle exec rails db:migrate | |
# Search | |
RAILS_ENV=production bin/tootctl search deploy --reset-chewy | |
# Ban temporary emails | |
mkdir -p ./~temp | |
wget --no-cache https://raw.githubusercontent.com/disposable-email-domains/disposable-email-domains/master/disposable_email_blocklist.conf -O ./~temp/email.list | |
domains="$(cat ./~temp/email.list)" | |
domains="${domains//$'\n'/ }" | |
RAILS_ENV=production bin/tootctl email-domain-blocks add $domains | |
rm -r ./~temp | |
# Services reboot 2 | |
#sudo service mastodon-sidekiq restart | |
#sudo service mastodon-streaming restart | |
#sudo service mastodon-web restart | |
echo "Remember: systemctl restart mastodon*" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment