Writing a Bash Loop Script for Jekyll
by Mike Levin
Sunday, May 01, 2022Editing 10 sites at once that are all actually in-play requires editing a lot of files at once, quite often identical. So long as they are identical, I should really centralize them. I can always break them into 10 different individually managed files anytime I want. But until then, cross-cutting changes will be a breeze. I’m already using a “helper” repo for this purpose… almost. I just need to carry through on the concept. Every little project gets done! 1, 2, 3… 1?
List the files you’ll be doing this with and put a copy in place.
- _config.yml (will break much of MikeLev.in, but fix as you go)
- _includes/youtubePlayer.html
- _layouts/post.html
- assets/css/styles.scss
I’ll even be able to do _layouts/default.html once I understand how to break out the Google Analytics ID with an include similar to the way I do the YouTube wrapper, but it’s one more layer lower in the rendering process so I have to think it through. Go ahead with those other ones and keep a sharp eye om MikeLev.in because it’s so different from the others.
for SITE in MikeLevin pythonically whatsametafor linuxpythonvimgit mikeateleven tardigradecircus removablefinger mike-levin lundervand pipulate guerillatech
do
rm ./$SITE/_posts/*
cp ./helpers/_config.yml ./$SITE/
cp ./helpers/style.scss ./$SITE/assets/css/
cp ./helpers/post.html ./$SITE/_layouts/
cp ./helpers/youtubePlayer.html ./$SITE/_includes/
done
Okay wow, that’ll change things. Think! Ready, fire, aim! Why not? It’s Sunday morning and I have time to fix anything that breaks. Here’s my entire current release script, which I call gall.sh… LOL! I’ve got some gall.
# _ _ _
# _| |__ | | __ _ ___| |_
# (_) '_ \| |/ _` / __| __|
# _| |_) | | (_| \__ \ |_
# (_)_.__/|_|\__,_|___/\__|
clear
for SITE in MikeLevin pythonically linuxpythonvimgit mikeateleven tardigradecircus removablefinger mike-levin lundervand pipulate whatsametafor guerillatech
do
rm ./$SITE/_posts/*
cp ./helpers/_config.yml ./$SITE/
cp ./helpers/style.scss ./$SITE/assets/css/
cp ./helpers/post.html ./$SITE/_layouts/
cp ./helpers/youtubePlayer.html ./$SITE/_includes/
done
figlet slicing blogs...
cd blogslicer
nbdev_clean_nbs
nbdev_build_lib
git commit -am "Updating all"
git push
python ./blogslicer/core.py -a "Mike Levin" -p "../MikeLevin" -t "Mike Levin's Blog" -s "blog"
python ./blogslicer/core.py -a "Mike Levin" -p "../pythonically" -t "Pythonic Ally Blog" -s "blog"
python ./blogslicer/core.py -a "Mike Levin" -p "../whatsametafor" -t "What's A Meta For Blog" -s "blog"
python ./blogslicer/core.py -a "Mike Levin" -p "../linuxpythonvimgit" -t "Linux, Python, vim & git Blog" -s "blog"
python ./blogslicer/core.py -a "Mike Levin" -p "../mikeateleven" -t "Mike's At Eleven Blog" -s "blog"
python ./blogslicer/core.py -a "Mike Levin" -p "../tardigradecircus" -t "Tardigrade Circus Blog" -s "blog"
python ./blogslicer/core.py -a "Mike Levin" -p "../removablefinger" -t "Removable Finger Blog" -s "blog"
python ./blogslicer/core.py -a "Mike Levin" -p "../mike-levin" -t "Mike-Levin.com Blog" -s "blog"
python ./blogslicer/core.py -a "Mike Levin" -p "../lundervand" -t "Lunervand Blog" -s "blog"
python ./blogslicer/core.py -a "Mike Levin" -p "../pipulate" -t "Pipulate Blog" -s "blog"
python ./blogslicer/core.py -a "Mike Levin" -p "../guerillatech" -t "Guerilla Tech Blog" -s "blog"
cd ..
figlet vim
cp ~/.vimrc ./vim/
cd ./vim
git commit -am "Updating all"
git push
cd ..
figlet helpers
cp ./all.sh ./helpers/
cp ./gall.sh ./helpers/
cp ./defaults.sh ./helpers/
cp ./homepages.sh ./helpers/
cp ./styles.sh ./helpers/
cd helpers
git commit -am "Updating all"
git push
cd ..
figlet journal
cd journal
git commit -am "Updating all"
git push
cd ..
figlet mikelevinseo -w 120
cd mlseo
jupyter nbconvert --to markdown index.ipynb
sed -i -e '1,5d' index.md
mv index.md ./docs
git add ./docs/*
git commit -am "Updating all"
git push
cd ..
for SITE in MikeLevin pythonically linuxpythonvimgit mikeateleven tardigradecircus removablefinger mike-levin lundervand pipulate whatsametafor guerillatech
do
figlet $SITE -w 120
cd $SITE
git add _includes/*
git add _posts/*
git commit -am "Updating all"
git push
cd ..
done
figlet Done!
Okay, in my first testing of this capability, I’m going to add some line-height around my prev/next arrows by putting this:
line-height: 3;
…into style.scss
Success! The URLs of my old MikeLev.in site didn’t even break. Oh wow, this is going to be nice.
Think through next steps. Every Little Project Gets Done!