From 9e997452760399c4cc8cee7a1d39952f8112995c Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Fri, 12 Mar 2021 08:46:07 +1100 Subject: [PATCH] use a clean Makefile system to build/deploy site This way, we get dependency/smart update for free. We don't need to rebuild all the pages everytime a new one is added. The author, date of creation and date of revision are extracted from git information. The index is generated automatically, so adding a recipe is literally just adding a markdown file in src/. The deployment system uses rsync to push only newer data to the server. There is a tag system that you can add at the end of each recipe file. Tag pages are generated statically that contain all recipes with a given tag. It introduces more HTML template files, though. To build website, type make build To deploy it, make deploy To clean everything, make clean --- .gitignore | 3 +- Makefile | 180 ++++++++++++ config | 5 + {src => data}/pix/beef-goulash.webp | Bin {src => data}/pix/cacio-e-pepe.webp | Bin {src => data}/pix/carbonara.webp | Bin {src => data}/pix/cheesy-meatballs.webp | Bin {src => data}/pix/country-skillet.webp | Bin {src => data}/pix/creamy-mashed-potatoes.webp | Bin {src => data}/pix/croutons.webp | Bin {src => data}/pix/csalad.webp | Bin .../pix/fried-anglerfish-fillet-00.webp | Bin .../pix/fried-anglerfish-fillet-01.webp | Bin {src => data}/pix/guacamole.webp | Bin {src => data}/pix/japanese-noodle-soup.webp | Bin {src => data}/pix/merchants-buckwheat.webp | Bin {src => data}/pix/pan-seared-chicken.webp | Bin {src => data}/pix/parmesan-potatoes.webp | Bin {src => data}/pix/pasta-navy-style.webp | Bin {src => data}/pix/refried-beans.webp | Bin {src => data}/pix/sunday-milkshake.webp | Bin {src => data}/pix/sweet-potato-fries.webp | Bin .../pix/tuscan-style-pork-roast.webp | Bin {src => data}/style.css | 0 example.md | 36 --- src/index.md => index.md | 0 src/.ssgignore | 1 - src/_footer.html | 8 - src/_header.html | 12 - src/mortar-and-pestle.md | 17 -- src/pix/bitcoin-based-cooking.webp | Bin 558 -> 0 bytes src/pix/mortar-and-pestle.webp | Bin 54694 -> 0 bytes src/salt.md | 41 --- src/slow-cooking-tips.md | 17 -- src/template.md | 49 ---- ssg5 | 263 ------------------ templates/article_entry.html | 1 + templates/article_footer.html | 0 templates/article_header.html | 2 + templates/article_list_footer.html | 1 + templates/article_list_header.html | 2 + templates/article_separator.html | 0 templates/footer.html | 7 + templates/header.html | 12 + templates/index_footer.html | 0 templates/index_header.html | 1 + templates/tag_entry.html | 1 + templates/tag_index_footer.html | 0 templates/tag_index_header.html | 2 + templates/tag_list_footer.html | 1 + templates/tag_list_header.html | 1 + templates/tag_separator.html | 1 + 52 files changed, 219 insertions(+), 445 deletions(-) create mode 100644 Makefile create mode 100644 config rename {src => data}/pix/beef-goulash.webp (100%) rename {src => data}/pix/cacio-e-pepe.webp (100%) rename {src => data}/pix/carbonara.webp (100%) rename {src => data}/pix/cheesy-meatballs.webp (100%) rename {src => data}/pix/country-skillet.webp (100%) rename {src => data}/pix/creamy-mashed-potatoes.webp (100%) rename {src => data}/pix/croutons.webp (100%) rename {src => data}/pix/csalad.webp (100%) rename {src => data}/pix/fried-anglerfish-fillet-00.webp (100%) rename {src => data}/pix/fried-anglerfish-fillet-01.webp (100%) rename {src => data}/pix/guacamole.webp (100%) rename {src => data}/pix/japanese-noodle-soup.webp (100%) rename {src => data}/pix/merchants-buckwheat.webp (100%) rename {src => data}/pix/pan-seared-chicken.webp (100%) rename {src => data}/pix/parmesan-potatoes.webp (100%) rename {src => data}/pix/pasta-navy-style.webp (100%) rename {src => data}/pix/refried-beans.webp (100%) rename {src => data}/pix/sunday-milkshake.webp (100%) rename {src => data}/pix/sweet-potato-fries.webp (100%) rename {src => data}/pix/tuscan-style-pork-roast.webp (100%) rename {src => data}/style.css (100%) delete mode 100644 example.md rename src/index.md => index.md (100%) delete mode 100644 src/.ssgignore delete mode 100644 src/_footer.html delete mode 100644 src/_header.html delete mode 100644 src/mortar-and-pestle.md delete mode 100644 src/pix/bitcoin-based-cooking.webp delete mode 100644 src/pix/mortar-and-pestle.webp delete mode 100644 src/salt.md delete mode 100644 src/slow-cooking-tips.md delete mode 100644 src/template.md delete mode 100755 ssg5 create mode 100644 templates/article_entry.html create mode 100644 templates/article_footer.html create mode 100644 templates/article_header.html create mode 100644 templates/article_list_footer.html create mode 100644 templates/article_list_header.html create mode 100644 templates/article_separator.html create mode 100644 templates/footer.html create mode 100644 templates/header.html create mode 100644 templates/index_footer.html create mode 100644 templates/index_header.html create mode 100644 templates/tag_entry.html create mode 100644 templates/tag_index_footer.html create mode 100644 templates/tag_index_header.html create mode 100644 templates/tag_list_footer.html create mode 100644 templates/tag_list_header.html create mode 100644 templates/tag_separator.html diff --git a/.gitignore b/.gitignore index 89ea643..1df25ee 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -dest +rss.xml +atom.xml diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8aa41a3 --- /dev/null +++ b/Makefile @@ -0,0 +1,180 @@ +#!/usr/bin/make -f + +BLOG := $(MAKE) -f $(lastword $(MAKEFILE_LIST)) --no-print-directory +ifneq ($(filter-out help,$(MAKECMDGOALS)),) +include config +endif + +# The following can be configured in config +BLOG_DATE_FORMAT_INDEX ?= %x +BLOG_DATE_FORMAT ?= %x %X +BLOG_TITLE ?= blog +BLOG_DESCRIPTION ?= blog +BLOG_URL_ROOT ?= http://localhost/blog +BLOG_FEED_MAX ?= 20 +BLOG_FEEDS ?= rss atom +BLOG_SRC ?= articles + + +.PHONY: help init build deploy clean + +ARTICLES = $(shell git ls-tree HEAD --name-only -- $(BLOG_SRC)/ 2>/dev/null) +TAGFILES = $(patsubst $(BLOG_SRC)/%.md,tags/%,$(ARTICLES)) + +help: + $(info blogit init|build|deploy|clean) + +init: + mkdir -p $(BLOG_SRC) data templates + printf '$$TITLE' > templates/header.html + printf '' > templates/footer.html + printf '' > templates/index_header.html + printf '

Tags:' > templates/tag_list_header.html + printf '$$NAME' > templates/tag_entry.html + printf ', ' > templates/tag_separator.html + printf '

' > templates/tag_list_footer.html + printf '

Articles

' > templates/article_list_footer.html + printf '' > templates/index_footer.html + printf '' > templates/tag_index_header.html + printf '' > templates/tag_index_footer.html + printf '' > templates/article_header.html + printf '' > templates/article_footer.html + printf 'blog\n' > .git/info/exclude + +build: blog/index.html tagpages $(patsubst $(BLOG_SRC)/%.md,blog/%.html,$(ARTICLES)) $(patsubst %,blog/%.xml,$(BLOG_FEEDS)) + +deploy: build + rsync -rLtvz $(BLOG_RSYNC_OPTS) blog/ data/ $(BLOG_REMOTE) + +clean: + rm -rf blog tags + +config: + printf 'BLOG_REMOTE:=%s\n' \ + '$(shell printf "Blog remote (eg: host:/var/www/html): ">/dev/tty; head -n1)' \ + > $@ + +tags/%: $(BLOG_SRC)/%.md + mkdir -p tags + grep -i '^; *tags:' "$<" | cut -d: -f2- | sed 's/ */\n/g' | sed '/^$$/d' | sort -u > $@ + +blog/index.html: $(ARTICLES) $(TAGFILES) $(addprefix templates/,$(addsuffix .html,header index_header tag_list_header tag_entry tag_separator tag_list_footer article_list_header article_entry article_separator article_list_footer index_footer footer)) + mkdir -p blog + TITLE="$(BLOG_TITLE)"; \ + export TITLE; \ + envsubst < templates/header.html > $@; \ + envsubst < templates/index_header.html >> $@; \ + envsubst < templates/tag_list_header.html >> $@; \ + first=true; \ + for t in $(shell cat $(TAGFILES) | sort -u); do \ + "$$first" || envsubst < templates/tag_separator.html; \ + NAME="$$t" \ + URL="@$$t.html" \ + envsubst < templates/tag_entry.html; \ + first=false; \ + done >> $@; \ + envsubst < templates/tag_list_footer.html >> $@; \ + envsubst < templates/article_list_header.html >> $@; \ + first=true; \ + for f in $(ARTICLES); do \ + printf '%s ' "$$f"; \ + git log --diff-filter=A --date="format:%s $(BLOG_DATE_FORMAT_INDEX)" --pretty=format:'%ad%n' -- "$$f"; \ + done | sort -k2nr | cut -d" " -f1,3- | while IFS=" " read -r FILE DATE; do \ + "$$first" || envsubst < templates/article_separator.html; \ + URL="`printf '%s' "\$$FILE" | sed 's,^$(BLOG_SRC)/\(.*\).md,\1,'`.html" \ + DATE="$$DATE" \ + TITLE="`head -n1 "\$$FILE" | sed -e 's/^# //g'`" \ + envsubst < templates/article_entry.html; \ + first=false; \ + done >> $@; \ + envsubst < templates/article_list_footer.html >> $@; \ + envsubst < templates/index_footer.html >> $@; \ + envsubst < templates/footer.html >> $@; \ + + +blog/tag/%.html: $(ARTICLES) $(addprefix templates/,$(addsuffix .html,header tag_header index_entry tag_footer footer)) + +.PHONY: tagpages +tagpages: $(TAGFILES) + +$(BLOG) $(patsubst %,blog/@%.html,$(shell cat $(TAGFILES) | sort -u)) + +blog/@%.html: $(TAGFILES) $(addprefix templates/,$(addsuffix .html,header tag_index_header tag_list_header tag_entry tag_separator tag_list_footer article_list_header article_entry article_separator article_list_footer tag_index_footer footer)) + mkdir -p blog + TITLE="Articles tagged $*"; \ + TAGS="$*"; \ + export TITLE; \ + export TAGS; \ + envsubst < templates/header.html > $@; \ + envsubst < templates/tag_index_header.html >> $@; \ + envsubst < templates/article_list_header.html >> $@; \ + first=true; \ + for f in $(shell grep -FH '$*' $(TAGFILES) | sed 's,^tags/\([^:]*\):.*,$(BLOG_SRC)/\1.md,'); do \ + printf '%s ' "$$f"; \ + git log --diff-filter=A --date="format:%s $(BLOG_DATE_FORMAT_INDEX)" --pretty=format:'%ad%n' -- "$$f"; \ + done | sort -k2nr | cut -d" " -f1,3- | while IFS=" " read -r FILE DATE; do \ + "$$first" || envsubst < templates/article_separator.html; \ + URL="`printf '%s' "\$$FILE" | sed 's,^$(BLOG_SRC)/\(.*\).md,\1,'`.html" \ + DATE="$$DATE" \ + TITLE="`head -n1 "\$$FILE" | sed -e 's/^# //g'`" \ + envsubst < templates/article_entry.html; \ + first=false; \ + done >> $@; \ + envsubst < templates/article_list_footer.html >> $@; \ + envsubst < templates/tag_index_footer.html >> $@; \ + envsubst < templates/footer.html >> $@; \ + + +blog/%.html: $(BLOG_SRC)/%.md $(addprefix templates/,$(addsuffix .html,header article_header article_footer footer)) + mkdir -p blog + TITLE="$(shell head -n1 $<)"; \ + export TITLE; \ + AUTHOR="$(shell git log --format="%an" -- "$<" | tail -n 1)"; \ + export AUTHOR; \ + DATE_POSTED="$(shell git log --diff-filter=A --date="format:$(BLOG_DATE_FORMAT)" --pretty=format:'%ad' -- "$<")"; \ + export DATE_POSTED; \ + DATE_EDITED="$(shell git log -n 1 --date="format:$(BLOG_DATE_FORMAT)" --pretty=format:'%ad' -- "$<")"; \ + export DATE_EDITED; \ + TAGS="$(shell grep -i '^; *tags:' "$<" | cut -d: -f2- | paste -sd ',')"; \ + export TAGS; \ + envsubst < templates/header.html > $@; \ + envsubst < templates/article_header.html >> $@; \ + sed -e '/^;/d' < $< | markdown -f fencedcode >> $@; \ + envsubst < templates/article_footer.html >> $@; \ + envsubst < templates/footer.html >> $@; \ + +blog/rss.xml: $(ARTICLES) + printf '\n\n\n%s\n%s\n%s\n' \ + "$(BLOG_TITLE)" "$(BLOG_URL_ROOT)" "$(BLOG_DESCRIPTION)" > $@ + for f in $(ARTICLES); do \ + printf '%s ' "$$f"; \ + git log --diff-filter=A --date="format:%s %a, %d %b %Y %H:%M:%S %z" --pretty=format:'%ad%n' -- "$$f"; \ + done | sort -k2nr | head -n $(BLOG_FEED_MAX) | cut -d" " -f1,3- | while IFS=" " read -r FILE DATE; do \ + printf '\n%s\n%s\n%s\n%s\n%s\n\n' \ + "`head -n 1 $$FILE`" \ + "$(BLOG_URL_ROOT)/`basename $$FILE`.html" \ + "$(BLOG_URL_ROOT)/`basename $$FILE`.html" \ + "$$DATE" \ + "`sed -n '1d;/^$$/{2{d;b};q};p' < $$FILE`"; \ + done >> $@ + printf '\n\n' >> $@ + +blog/atom.xml: $(ARTICLES) + printf '\n\n%s\n%s\n%s\n\n%s\n\n' \ + "$(BLOG_TITLE)" "$(BLOG_DESCRIPTION)" "$(shell date +%Y-%m-%dT%H:%M:%SZ)" "$(BLOG_URL_ROOT)" "$(BLOG_URL_ROOT)/atom.xml" "$(BLOG_URL_ROOT)/atom.xml" > $@ + for f in $(ARTICLES); do \ + printf '%s ' "$$f"; \ + git log --diff-filter=A --date="format:%s %Y-%m-%dT%H:%M:%SZ" --pretty=format:'%ad %aN%n' -- "$$f"; \ + done | sort -k2nr | head -n $(BLOG_FEED_MAX) | cut -d" " -f1,3- | while IFS=" " read -r FILE DATE AUTHOR; do \ + printf '\n%s\n\n%s\n%s\n%s\n%s\n%s\n\n' \ + "`head -n 1 $$FILE`" \ + "$(BLOG_URL_ROOT)/`basename $$FILE`.html" \ + "$(BLOG_URL_ROOT)/`basename $$FILE`.html" \ + "$$DATE" \ + "`git log -n 1 --date="format:%Y-%m-%dT%H:%M:%SZ" --pretty=format:'%ad' -- "$$FILE"`" \ + "$$AUTHOR" \ + "`sed -n '1d;/^$$/{2{d;b};q};p' < $$FILE`"; \ + done >> $@ + printf '\n' >> $@ diff --git a/config b/config new file mode 100644 index 0000000..651a0e3 --- /dev/null +++ b/config @@ -0,0 +1,5 @@ +BLOG_TITLE:=based.cooking +BLOG_REMOTE:= +BLOG_DATE_FORMAT_INDEX:=%F +BLOG_DATE_FORMAT:=%F %H:%M +BLOG_SRC:=src diff --git a/src/pix/beef-goulash.webp b/data/pix/beef-goulash.webp similarity index 100% rename from src/pix/beef-goulash.webp rename to data/pix/beef-goulash.webp diff --git a/src/pix/cacio-e-pepe.webp b/data/pix/cacio-e-pepe.webp similarity index 100% rename from src/pix/cacio-e-pepe.webp rename to data/pix/cacio-e-pepe.webp diff --git a/src/pix/carbonara.webp b/data/pix/carbonara.webp similarity index 100% rename from src/pix/carbonara.webp rename to data/pix/carbonara.webp diff --git a/src/pix/cheesy-meatballs.webp b/data/pix/cheesy-meatballs.webp similarity index 100% rename from src/pix/cheesy-meatballs.webp rename to data/pix/cheesy-meatballs.webp diff --git a/src/pix/country-skillet.webp b/data/pix/country-skillet.webp similarity index 100% rename from src/pix/country-skillet.webp rename to data/pix/country-skillet.webp diff --git a/src/pix/creamy-mashed-potatoes.webp b/data/pix/creamy-mashed-potatoes.webp similarity index 100% rename from src/pix/creamy-mashed-potatoes.webp rename to data/pix/creamy-mashed-potatoes.webp diff --git a/src/pix/croutons.webp b/data/pix/croutons.webp similarity index 100% rename from src/pix/croutons.webp rename to data/pix/croutons.webp diff --git a/src/pix/csalad.webp b/data/pix/csalad.webp similarity index 100% rename from src/pix/csalad.webp rename to data/pix/csalad.webp diff --git a/src/pix/fried-anglerfish-fillet-00.webp b/data/pix/fried-anglerfish-fillet-00.webp similarity index 100% rename from src/pix/fried-anglerfish-fillet-00.webp rename to data/pix/fried-anglerfish-fillet-00.webp diff --git a/src/pix/fried-anglerfish-fillet-01.webp b/data/pix/fried-anglerfish-fillet-01.webp similarity index 100% rename from src/pix/fried-anglerfish-fillet-01.webp rename to data/pix/fried-anglerfish-fillet-01.webp diff --git a/src/pix/guacamole.webp b/data/pix/guacamole.webp similarity index 100% rename from src/pix/guacamole.webp rename to data/pix/guacamole.webp diff --git a/src/pix/japanese-noodle-soup.webp b/data/pix/japanese-noodle-soup.webp similarity index 100% rename from src/pix/japanese-noodle-soup.webp rename to data/pix/japanese-noodle-soup.webp diff --git a/src/pix/merchants-buckwheat.webp b/data/pix/merchants-buckwheat.webp similarity index 100% rename from src/pix/merchants-buckwheat.webp rename to data/pix/merchants-buckwheat.webp diff --git a/src/pix/pan-seared-chicken.webp b/data/pix/pan-seared-chicken.webp similarity index 100% rename from src/pix/pan-seared-chicken.webp rename to data/pix/pan-seared-chicken.webp diff --git a/src/pix/parmesan-potatoes.webp b/data/pix/parmesan-potatoes.webp similarity index 100% rename from src/pix/parmesan-potatoes.webp rename to data/pix/parmesan-potatoes.webp diff --git a/src/pix/pasta-navy-style.webp b/data/pix/pasta-navy-style.webp similarity index 100% rename from src/pix/pasta-navy-style.webp rename to data/pix/pasta-navy-style.webp diff --git a/src/pix/refried-beans.webp b/data/pix/refried-beans.webp similarity index 100% rename from src/pix/refried-beans.webp rename to data/pix/refried-beans.webp diff --git a/src/pix/sunday-milkshake.webp b/data/pix/sunday-milkshake.webp similarity index 100% rename from src/pix/sunday-milkshake.webp rename to data/pix/sunday-milkshake.webp diff --git a/src/pix/sweet-potato-fries.webp b/data/pix/sweet-potato-fries.webp similarity index 100% rename from src/pix/sweet-potato-fries.webp rename to data/pix/sweet-potato-fries.webp diff --git a/src/pix/tuscan-style-pork-roast.webp b/data/pix/tuscan-style-pork-roast.webp similarity index 100% rename from src/pix/tuscan-style-pork-roast.webp rename to data/pix/tuscan-style-pork-roast.webp diff --git a/src/style.css b/data/style.css similarity index 100% rename from src/style.css rename to data/style.css diff --git a/example.md b/example.md deleted file mode 100644 index dfb3d05..0000000 --- a/example.md +++ /dev/null @@ -1,36 +0,0 @@ -# This is the dish title - -If necessary, provide a very brief description of the dish in one or two sentences. -For most dishes, this will be unnecessary. -If there is a title image of this dish, it should be above this paragraph. -You may also include prep/cook time and the number of servings as below: - -- ⏲️ Prep time: 10 min -- 🍳Cook time: 30 min -- 🍽️ Servings: 4 - -## Ingredients - -- List the ingredients -- in an unordered list -- similar to this. -- List amounts if necessary. -- Put (optional) at the end of optional ingredients - -## Directions - -1. Now using an ordered list, -2. give the directions to prepare the dish. -3. Do **not** add unnecessary blank lines between items. -4. If necessary, -5. an image can be included between some directions if needed to explain something particular. -6. But that should be kept to a minimum to reduce bandwidth and aid in simplicity. - -## Contribution - -Here, just put your name and links to yourself (maybe a website or donation link) if you want. -You may say "Anonymous" or a screenname if desired. -If you add something substantial to an already existing recipe (including and image) you may add your name below with the contribution in parens. - -- Luke Smith - [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) -- Luke Smith (photo credit) - [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) diff --git a/src/index.md b/index.md similarity index 100% rename from src/index.md rename to index.md diff --git a/src/.ssgignore b/src/.ssgignore deleted file mode 100644 index febf952..0000000 --- a/src/.ssgignore +++ /dev/null @@ -1 +0,0 @@ -template.md diff --git a/src/_footer.html b/src/_footer.html deleted file mode 100644 index 452246e..0000000 --- a/src/_footer.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - - diff --git a/src/_header.html b/src/_header.html deleted file mode 100644 index 3110681..0000000 --- a/src/_header.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/mortar-and-pestle.md b/src/mortar-and-pestle.md deleted file mode 100644 index 6abf387..0000000 --- a/src/mortar-and-pestle.md +++ /dev/null @@ -1,17 +0,0 @@ -# Get a Mortar and Pestle - -![mortar-and-pestle](pix/mortar-and-pestle.webp) - -Mortars and pestles are tools which have unfortunately been nearly forgotten in modern American kitchens, but they -have been around since the stone age for a reason. -They are one of the most useful appliances and require no electricity. - -They easily smash garlic, nuts and other things (also automatically removes skins). -This is much better than simple slicing because it squeezes out the juices and tastes of things. - -You can also easily make paste (like pesto) and out of herbs and other simple ingredients. -Many people use a hard-to-clean and expensive electric food processor to do things like this, -but a larger mortar and pestle could get the job done just as easily. - -Do not get porcelain mortar and pestles; they are non-functional and loud. -I have two granite ones which work very well (see pic above). diff --git a/src/pix/bitcoin-based-cooking.webp b/src/pix/bitcoin-based-cooking.webp deleted file mode 100644 index 1c5c8afb36de7115f639af03fbf74d4e771271aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 558 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 KyB){nql^H{?cyc? diff --git a/src/salt.md b/src/salt.md deleted file mode 100644 index e35af4f..0000000 --- a/src/salt.md +++ /dev/null @@ -1,41 +0,0 @@ -# Table Salt vs. Kosher Salt - -Table salt is the salt on your table: teeny-tiny grains in a little shaker. - -Kosher salt is the salt that should be in your kitchen: large, thick grains. - -Some people new to cooking get confused on the difference and when to use one or the other. - -The long story short is you should always use kosher salt for cooking. -Table salt is much more intense and is only for brisk post-cooking flavoring at the table. -Kosher salt is more subtle, dissolves slower and thus releases its flavor slower. - -Note also that you should add a larger mass of kosher salt where you might only -add a pinch of table salt, since table salt is much stronger partially because -it dissolves so quickly. - -## Table salt is not lindy. - -Table salt has iodine and other additives. - -Its history is somewhat analogous to the addition of fluoride to municipal -water supplies. Nearly a hundred years ago, the U.S. government began working -with corporations to add iodine to salt ostensibly because they were concerned -about people having iodine deficiencies. - -A healthy diet including eggs, dairy and some seafood should get enough iodine -elsewhere to not need it in the form of table salt supplements, so don't feel -like to you need to use it. - -## Why is kosher salt called "kosher" salt? - -Hebrews and then Jews revile eating meat with any blood in it. Larger grain -salt was better for the process called "koshering" whereby meat is covered in -salt and the salt draws out the liquid blood. Note that table salt is not -non-kosher in Mosaic law either, it is simply not suited for this "koshering" -process because it simply dissolves into the meat. - -For one reason or another, this association caught on and we now call coarse -grain salt "kosher." Note that kosher salt is more or less the natural form of -salt, it is not, as one might imagine, some new innovation to comply with -Jewish dietary practice. diff --git a/src/slow-cooking-tips.md b/src/slow-cooking-tips.md deleted file mode 100644 index e635445..0000000 --- a/src/slow-cooking-tips.md +++ /dev/null @@ -1,17 +0,0 @@ -# Slow Cooking Benefits and Tips - -You can buy a Slow Cooker for cheap, but it is still one of the most precious tools you can have in a kitchen. - -## Benefits - -- It's cheap: slow-cooking turns the toughest and cheapest cuts of meat into that "fall off the bone" goodness. Chuck steak and pork shoulder/Boston butts are some of the cheapest meats and are sure hard to eat, but put them in a slow-cooker and it's gourmet stuff. -- It is easy and low-effort: ingredients take very little time to prep and the cooking happens overnight or while you're at work. -- It's an objective science: a lot of people have a hard time developing the best techniques for kneading or pan-frying or other culinary skills, but slow-cooking just requires you put the ingredients in. No magic, just follow directions. -- It's relaxing: by the time your food is done, you've had plenty of time to clean up, so you can serve and eat your meal without having to worry about cleaning up afterwards. -- It's portable: you can cook for an event or your friends because you load up your slow-cooker and go. - -## Tips - -- Things that need more cooking should always go at the bottom. For example, potatoes take forever to cook, so put them under your meat. They'll get the extra cooking they need while getting marinated in juices. -- Only slow-cook dry herbs, not freshly-picked herbs, although you can add freshly-picked herbs in the last 10 or 20 minutes for some extra flavor. -- Only take off the top to check how things are doing in absolute emergencies. It loses a lot more heat than you might expect when you open that. diff --git a/src/template.md b/src/template.md deleted file mode 100644 index eca38fd..0000000 --- a/src/template.md +++ /dev/null @@ -1,49 +0,0 @@ -# Recipe name - -This is a brief, one or two sentence description of the dish. - -Optionally include a picture of the dish here, stored in `pix/` with the same base name as this file. -Please take your own picture after having followed exactly this recipe. - -## Ingredients - -- Just do -- a very simple -- markdown list for this -- with amounts. - -## Directions - -1. Now include the directions. -2. I suppose this list should be numbered -3. just for convenience's sake. -4. If necessary, include directional images between these items. - -![like this](lol.webp) - -5. Looks good. -6. Obvious, - -## Contributors - - - -- **Luke Smith** -- [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) -- Billy Smith -- [website](https://lukesmith.xyz) (improved kneading technique added) - - - - diff --git a/ssg5 b/ssg5 deleted file mode 100755 index 9aa58fe..0000000 --- a/ssg5 +++ /dev/null @@ -1,263 +0,0 @@ -#!/bin/sh -e -# -# https://rgz.ee/bin/ssg5 -# Copyright 2018-2019 Roman Zolotarev -# -# Permission to use, copy, modify, and/or distribute this software for any -# purpose with or without fee is hereby granted, provided that the above -# copyright notice and this permission notice appear in all copies. -# -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# - -main() { - test -n "$1" || usage - test -n "$2" || usage - test -n "$3" || usage - test -n "$4" || usage - test -d "$1" || no_dir "$1" - test -d "$2" || no_dir "$2" - - src=$(readlink_f "$1") - dst=$(readlink_f "$2") - - IGNORE=$( - if ! test -f "$src/.ssgignore" - then - printf ' ! -path "*/.*"' - return - fi - while read -r x - do - test -n "$x" || continue - printf ' ! -path "*/%s*"' "$x" - done < "$src/.ssgignore" - ) - - # files - - title="$3" - - h_file="$src/_header.html" - f_file="$src/_footer.html" - test -f "$f_file" && FOOTER=$(cat "$f_file") && export FOOTER - test -f "$h_file" && HEADER=$(cat "$h_file") && export HEADER - - list_dirs "$src" | - (cd "$src" && cpio -pdu "$dst") - - fs=$( - if test -f "$dst/.files" - then list_affected_files "$src" "$dst/.files" - else list_files "$1" - fi - ) - - if test -n "$fs" - then - echo "$fs" | tee "$dst/.files" - - if echo "$fs" | grep -q '\.md$' - then - if test -x "$(which lowdown 2> /dev/null)" - then - echo "$fs" | grep '\.md$' | - render_md_files_lowdown "$src" "$dst" "$title" - else - if test -x "$(which Markdown.pl 2> /dev/null)" - then - echo "$fs" | grep '\.md$' | - render_md_files_Markdown_pl "$src" "$dst" "$title" - else - echo "couldn't find lowdown nor Markdown.pl" - exit 3 - fi - fi - fi - - echo "$fs" | grep '\.html$' | - render_html_files "$src" "$dst" "$title" - - echo "$fs" | grep -Ev '\.md$|\.html$' | - (cd "$src" && cpio -pu "$dst") - fi - - printf '[ssg] ' >&2 - print_status 'file, ' 'files, ' "$fs" >&2 - - - # sitemap - - base_url="$4" - date=$(date +%Y-%m-%d) - urls=$(list_pages "$src") - - test -n "$urls" && - render_sitemap "$urls" "$base_url" "$date" > "$dst/sitemap.xml" - - print_status 'url' 'urls' "$urls" >&2 - echo >&2 -} - - -readlink_f() { - file="$1" - cd "$(dirname "$file")" - file=$(basename "$file") - while test -L "$file" - do - file=$(readlink "$file") - cd "$(dirname "$file")" - file=$(basename "$file") - done - dir=$(pwd -P) - echo "$dir/$file" -} - - -print_status() { - test -z "$3" && printf 'no %s' "$2" && return - - echo "$3" | awk -v singular="$1" -v plural="$2" ' - END { - if (NR==1) printf NR " " singular - if (NR>1) printf NR " " plural - }' -} - - -usage() { - echo "usage: ${0##*/} src dst title base_url" >&2 - exit 1 -} - - -no_dir() { - echo "${0##*/}: $1: No such directory" >&2 - exit 2 -} - -list_dirs() { - cd "$1" && eval "find . -type d ! -name '.' ! -path '*/_*' $IGNORE" -} - - -list_files() { - cd "$1" && eval "find . -type f ! -name '.' ! -path '*/_*' $IGNORE" -} - - -list_dependant_files () { - e="\\( -name '*.html' -o -name '*.md' -o -name '*.css' -o -name '*.js' \\)" - cd "$1" && eval "find . -type f ! -name '.' ! -path '*/_*' $IGNORE $e" -} - -list_newer_files() { - cd "$1" && eval "find . -type f ! -name '.' $IGNORE -newer $2" -} - - -has_partials() { - grep -qE '^./_.*\.html$|^./_.*\.js$|^./_.*\.css$' -} - - -list_affected_files() { - fs=$(list_newer_files "$1" "$2") - - if echo "$fs" | has_partials - then list_dependant_files "$1" - else echo "$fs" - fi -} - - -render_html_files() { - while read -r f - do render_html_file "$3" < "$1/$f" > "$2/$f" - done -} - - -render_md_files_lowdown() { - while read -r f - do - lowdown \ - < "$1/$f" | - render_html_file "$3" \ - > "$2/${f%\.md}.html" - done -} - - -render_md_files_Markdown_pl() { - while read -r f - do - Markdown.pl < "$1/$f" | - render_html_file "$3" \ - > "$2/${f%\.md}.html" - done -} - - -render_html_file() { - # h/t Devin Teske - awk -v title="$1" ' - { body = body "\n" $0 } - END { - body = substr(body, 2) - if (body ~ /<[Hh][Tt][Mm][Ll]/) { - print body - exit - } - if (match(body, /<[[:space:]]*[Hh]1(>|[[:space:]][^>]*>)/)) { - t = substr(body, RSTART + RLENGTH) - sub("<[[:space:]]*/[[:space:]]*[Hh]1.*", "", t) - gsub(/^[[:space:]]*|[[:space:]]$/, "", t) - if (t) title = t " — " title - } - n = split(ENVIRON["HEADER"], header, /\n/) - for (i = 1; i <= n; i++) { - if (match(tolower(header[i]), "")) { - head = substr(header[i], 1, RSTART - 1) - tail = substr(header[i], RSTART + RLENGTH) - print head "" title "" tail - } else print header[i] - } - print body - print ENVIRON["FOOTER"] - }' -} - - -list_pages() { - e="\\( -name '*.html' -o -name '*.md' \\)" - cd "$1" && eval "find . -type f ! -path '*/.*' ! -path '*/_*' $IGNORE $e" | - sed 's#^./##;s#.md$#.html#;s#/index.html$#/#' -} - - -render_sitemap() { - urls="$1" - base_url="$2" - date="$3" - - echo '' - echo '' - echo "$urls" | - sed -E 's#^(.*)$#'"$base_url"'/\1'\ -"$date"'1.0#' - echo '' -} - -main "$@" diff --git a/templates/article_entry.html b/templates/article_entry.html new file mode 100644 index 0000000..4c149eb --- /dev/null +++ b/templates/article_entry.html @@ -0,0 +1 @@ +
  • $TITLE
  • diff --git a/templates/article_footer.html b/templates/article_footer.html new file mode 100644 index 0000000..e69de29 diff --git a/templates/article_header.html b/templates/article_header.html new file mode 100644 index 0000000..e66f98c --- /dev/null +++ b/templates/article_header.html @@ -0,0 +1,2 @@ +

    index

    +

    Recipe posted on: $DATE_POSTED, last edited on: $DATE_EDITED, written by: $AUTHOR

    diff --git a/templates/article_list_footer.html b/templates/article_list_footer.html new file mode 100644 index 0000000..3d3a44c --- /dev/null +++ b/templates/article_list_footer.html @@ -0,0 +1 @@ + diff --git a/templates/article_list_header.html b/templates/article_list_header.html new file mode 100644 index 0000000..54ba16f --- /dev/null +++ b/templates/article_list_header.html @@ -0,0 +1,2 @@ +

    Recipes

    +
      diff --git a/templates/article_separator.html b/templates/article_separator.html new file mode 100644 index 0000000..e69de29 diff --git a/templates/footer.html b/templates/footer.html new file mode 100644 index 0000000..b7cd6bf --- /dev/null +++ b/templates/footer.html @@ -0,0 +1,7 @@ +

      This website is a fork from Luke Smith's Based Cooking

      + + diff --git a/templates/header.html b/templates/header.html new file mode 100644 index 0000000..9b6f9f4 --- /dev/null +++ b/templates/header.html @@ -0,0 +1,12 @@ + + + + + + $TITLE + + + diff --git a/templates/index_footer.html b/templates/index_footer.html new file mode 100644 index 0000000..e69de29 diff --git a/templates/index_header.html b/templates/index_header.html new file mode 100644 index 0000000..a222e9a --- /dev/null +++ b/templates/index_header.html @@ -0,0 +1 @@ +

      Only Based cooking. No ads, no tracking, nothing but based cooking.

      diff --git a/templates/tag_entry.html b/templates/tag_entry.html new file mode 100644 index 0000000..cb23fee --- /dev/null +++ b/templates/tag_entry.html @@ -0,0 +1 @@ +$NAME \ No newline at end of file diff --git a/templates/tag_index_footer.html b/templates/tag_index_footer.html new file mode 100644 index 0000000..e69de29 diff --git a/templates/tag_index_header.html b/templates/tag_index_header.html new file mode 100644 index 0000000..2d73153 --- /dev/null +++ b/templates/tag_index_header.html @@ -0,0 +1,2 @@ +

      index

      +

      Filtering recipes tagged: $TAGS

      diff --git a/templates/tag_list_footer.html b/templates/tag_list_footer.html new file mode 100644 index 0000000..38bf9e7 --- /dev/null +++ b/templates/tag_list_footer.html @@ -0,0 +1 @@ +

      diff --git a/templates/tag_list_header.html b/templates/tag_list_header.html new file mode 100644 index 0000000..ae3a759 --- /dev/null +++ b/templates/tag_list_header.html @@ -0,0 +1 @@ +

      Tags: diff --git a/templates/tag_separator.html b/templates/tag_separator.html new file mode 100644 index 0000000..c3a6e48 --- /dev/null +++ b/templates/tag_separator.html @@ -0,0 +1 @@ +, \ No newline at end of file