From feb5d6ca8e96c579751788b676b14e72d51f84df Mon Sep 17 00:00:00 2001 From: Luke Smith Date: Sun, 14 Mar 2021 17:10:17 -0400 Subject: [PATCH 01/22] Monero donation address added, fixes #160 --- src/index.md | 4 +++- src/style.css | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/index.md b/src/index.md index d64b222..22aaf60 100644 --- a/src/index.md +++ b/src/index.md @@ -106,4 +106,6 @@ Founded to provide a simple online cookbook without ads and obese web design. - Submit new recipes via git via [Github](https://github.com/lukesmithxyz/based.cooking) or [Gitlab](https://gitlab.com/lukesmithxyz/based.cooking). - If a recipe has no image for it, make the recipe as presented and submit a picture above or to [luke@lukesmith.xyz](mailto:luke@lukesmith.xyz). - Donate to the individual people who contribute pages whose names are at the bottom of each page. -- Donate Bitcoin to the site's long-term maintenance fund: `bc1q763s4ud0hgfa66ce64gyh6tsss49vyk5cqcm6w` ([QR code](pix/bitcoin-based-cooking.webp)) +- Donate to the site's long-term maintenance fund: + - ![BTC logo](https://lukesmith.xyz/pix/btc.svg) Bitcoin: `bc1q763s4ud0hgfa66ce64gyh6tsss49vyk5cqcm6w` ([QR code](pix/bitcoin-based-cooking.webp)) + - ![XMR Logo](https://lukesmith.xyz/pix/xmr.svg) Monero: `48jewbtxe4jU3MnzJFjTs3gVFWh2nRrAMWdUuUd7Ubo375LL4SjLTnMRKBrXburvEh38QSNLrJy3EateykVCypnm6gcT9bh` ([QR code](https://lukesmith.xyz/pix/xmr.png)) diff --git a/src/style.css b/src/style.css index 77a285c..2e6aa32 100644 --- a/src/style.css +++ b/src/style.css @@ -20,6 +20,17 @@ img { display: block ; } +code { + overflow-wrap: break-word ; + color: lime ; +} + +li img { + max-width: 1em ; + max-height: 1em ; + display: inline ; +} + @media (prefers-color-scheme: dark) { body { background: #151515 ; From 9e997452760399c4cc8cee7a1d39952f8112995c Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Fri, 12 Mar 2021 08:46:07 +1100 Subject: [PATCH 02/22] 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 From 1b4eca2c284e2cd8c4335a92b3405237f606a6be Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Fri, 12 Mar 2021 09:02:48 +1100 Subject: [PATCH 03/22] tagged all recipes --- src/aelplermagronen.md | 2 ++ src/almeirim-stone-soup.md | 2 ++ src/banana-bread.md | 2 ++ src/beef-jerky.md | 1 + src/beef-stew.md | 2 ++ src/beef-tips.md | 2 ++ src/bread.md | 2 ++ src/broiled-trevally.md | 2 ++ src/cacio-e-pepe.md | 2 ++ src/carbonade.md | 2 ++ src/chicken-biscuit-potpie.md | 2 ++ src/chicken-parmesan.md | 2 ++ src/chicken-stock-bone-broth.md | 2 ++ src/chicken-tacos.md | 2 ++ src/chicken-tomato-spinach-curry.md | 2 ++ src/chicken-wings.md | 2 ++ src/chili-con-carne.md | 2 ++ src/dried-tomato-plum-spread.md | 2 ++ src/drunken-beans.md | 2 ++ src/eggs.md | 2 ++ src/flammkuchen.md | 2 ++ src/french-mustard-sauce-porkchops.md | 2 ++ src/gnocchi.md | 2 ++ src/liverpate.md | 2 ++ src/matcha-cookies.md | 2 ++ src/miso-ginger-pork.md | 2 ++ src/pancake.md | 2 ++ src/pasta-sauce.md | 2 ++ src/pasta.md | 2 ++ src/pizza-dough.md | 2 ++ src/portuguese-steak-with-beer-sauce.md | 2 ++ src/potato-and-eggplant-curry.md | 2 ++ src/rice.md | 2 ++ src/sauerkraut.md | 2 ++ src/stroganoff.md | 2 ++ src/tuscan-style-pork-roast.md | 2 ++ 36 files changed, 71 insertions(+) diff --git a/src/aelplermagronen.md b/src/aelplermagronen.md index e9b97ca..90e4171 100644 --- a/src/aelplermagronen.md +++ b/src/aelplermagronen.md @@ -33,3 +33,5 @@ Cooking time: ~30 minutes ## Contributors - **Alexander Bocken** -- [contact](mailto:alexander@bocken.org) + +;tags: swiss pork potato diff --git a/src/almeirim-stone-soup.md b/src/almeirim-stone-soup.md index f35a3fe..ec5aca1 100644 --- a/src/almeirim-stone-soup.md +++ b/src/almeirim-stone-soup.md @@ -33,3 +33,5 @@ ## Contribution - Artur Mancha -- [Pleroma](https://pleroma.pt/@lisbonjoker) + +;tags: portuguese soup pork diff --git a/src/banana-bread.md b/src/banana-bread.md index a89af6b..2751c96 100644 --- a/src/banana-bread.md +++ b/src/banana-bread.md @@ -33,3 +33,5 @@ Not too sweet. Great for when you have friends over for tea. ## Contribution - Martin Chrzanowski -- [website](https://m-chrzan.xyz), [donate](https://m-chrzan.xyz/crypto.html) + +;tags: bread desert diff --git a/src/beef-jerky.md b/src/beef-jerky.md index 5704231..22ce332 100644 --- a/src/beef-jerky.md +++ b/src/beef-jerky.md @@ -32,3 +32,4 @@ Other meats may be substituted instead of beef, but use caution. - Elias Howell -- [website](https://snarf.top) +;tags: beef snack diff --git a/src/beef-stew.md b/src/beef-stew.md index 20bb636..1673328 100644 --- a/src/beef-stew.md +++ b/src/beef-stew.md @@ -26,3 +26,5 @@ There you have it, an idiot-proof stew that should taste reasonably well. Beside ## Contribution - Eoin Coogan - [website](https://eoincoogan.com), [youtube](https://www.youtube.com/channel/UCehh50T6qtDpt_kEUF33GJw) + +;tags: irish stew lamb beef diff --git a/src/beef-tips.md b/src/beef-tips.md index 24cfb1d..24e864c 100644 --- a/src/beef-tips.md +++ b/src/beef-tips.md @@ -48,3 +48,5 @@ Tender chunks of meat in a rich brown gravy poured over sour cream mashed potato - **Batu Cam** -- Transcribed recipe from Mark Rippetoe's video with moderate to significant modifications based on experience -- Monero (XMR) to help me save for an unazoomer cabin: 85eZ4uVd4gkiCsQEeDnsQG9pUbDzdi1r1VSJ9hK5Sx7hKsFZjvmqtWV7gU1ysWUR32jhWutBRGUUq8VAJNUfin9wBCCuTdg - **Mark Rippetoe** -- Original recipe author, creator of starting strength, and pink nationalist -- [Website](https://startingstrength.com) + +;tags: american beef diff --git a/src/bread.md b/src/bread.md index 249863e..a8d07d9 100644 --- a/src/bread.md +++ b/src/bread.md @@ -35,3 +35,5 @@ This is a recipe for a basic loaf of bread. The dough itself can be used however ## Contribution Alex Selimov - [Website](https://alexselimov.xyz) + +;tags: basic bread diff --git a/src/broiled-trevally.md b/src/broiled-trevally.md index 0766886..4386c02 100644 --- a/src/broiled-trevally.md +++ b/src/broiled-trevally.md @@ -30,3 +30,5 @@ So here's a recipe to make it look---and taste!---more appealing. ## Contribution - O.Q. Olarte [website](https://oqolarte.github.io), [donate](https://oqolarte.github.io/support) + +;tags: fish diff --git a/src/cacio-e-pepe.md b/src/cacio-e-pepe.md index 306b021..31860d0 100644 --- a/src/cacio-e-pepe.md +++ b/src/cacio-e-pepe.md @@ -26,3 +26,5 @@ Pasta water and the cheese are already salty, so you may not need to add any ext - Some guy called [siedes](https://github.com/siedes) - Batu Cam -- Added picture -- XMR: 85eZ4uVd4gkiCsQEeDnsQG9pUbDzdi1r1VSJ9hK5Sx7hKsFZjvmqtWV7gU1ysWUR32jhWutBRGUUq8VAJNUfin9wBCCuTdg + +;tags: italian quick pasta diff --git a/src/carbonade.md b/src/carbonade.md index 5a7c585..49781f4 100644 --- a/src/carbonade.md +++ b/src/carbonade.md @@ -36,3 +36,5 @@ The smoked bacon is not in the traditional recipe but it's good. Don't add it if ## Contribution - anon btc: 1FJSSps89rEMtYm8Vvkp2uyTX9MFpZtcGy + +;tags: flemish stew beef diff --git a/src/chicken-biscuit-potpie.md b/src/chicken-biscuit-potpie.md index 25ba6b4..438e954 100644 --- a/src/chicken-biscuit-potpie.md +++ b/src/chicken-biscuit-potpie.md @@ -18,3 +18,5 @@ ## Contribution Front3ndNinja - [Website](https://github.com/Front3ndNinja) + +;tags: chicken diff --git a/src/chicken-parmesan.md b/src/chicken-parmesan.md index 02866a7..3643326 100644 --- a/src/chicken-parmesan.md +++ b/src/chicken-parmesan.md @@ -38,3 +38,5 @@ I recommend keeping the breasts separate and only adding the sauce when served. ## Contribution - Luke Smith -- [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) + +;tags: italian chicken diff --git a/src/chicken-stock-bone-broth.md b/src/chicken-stock-bone-broth.md index e1f522b..0a4e461 100644 --- a/src/chicken-stock-bone-broth.md +++ b/src/chicken-stock-bone-broth.md @@ -31,3 +31,5 @@ You may eat or compost the remaining vegetables. ## Contribution - Luke Smith -- [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) + +;tags: chicken stock basic diff --git a/src/chicken-tacos.md b/src/chicken-tacos.md index afe9ec9..6fb5db8 100644 --- a/src/chicken-tacos.md +++ b/src/chicken-tacos.md @@ -26,3 +26,5 @@ ## Contribution - Luke Smith -- [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) + +;tags: mexican chicken diff --git a/src/chicken-tomato-spinach-curry.md b/src/chicken-tomato-spinach-curry.md index cf13b12..7307dca 100644 --- a/src/chicken-tomato-spinach-curry.md +++ b/src/chicken-tomato-spinach-curry.md @@ -26,3 +26,5 @@ Note: You may also need a blender / food processor. ## Contribution - Luke Goule - [GitHub](https://github.com/LukeGoule), [XMR Donation QR](https://ergine.cc/xmr.png) + +;tags: curry chicken diff --git a/src/chicken-wings.md b/src/chicken-wings.md index de24bdc..9192706 100644 --- a/src/chicken-wings.md +++ b/src/chicken-wings.md @@ -23,3 +23,5 @@ Perfectly cooked fall off the bone buffalo wings. ## Contributors - **Kyle Steger** -- [GitHub](https://github.com/kyleVsteger) -- _just some dude_ + +;tags: chicken diff --git a/src/chili-con-carne.md b/src/chili-con-carne.md index 0f633ae..4bdcce9 100644 --- a/src/chili-con-carne.md +++ b/src/chili-con-carne.md @@ -36,3 +36,5 @@ ## Contribution - Aaron Taylor -- [website](https://atay.me) + +;tags: mexican beef diff --git a/src/dried-tomato-plum-spread.md b/src/dried-tomato-plum-spread.md index 0942e53..551f8e3 100644 --- a/src/dried-tomato-plum-spread.md +++ b/src/dried-tomato-plum-spread.md @@ -20,3 +20,5 @@ Quick and simple bread spread. ## Contribution - Patryk Niedźwiedziński - [website](https://niedzwiedzinski.cyou) + +;tags: bread quick snack diff --git a/src/drunken-beans.md b/src/drunken-beans.md index 7ae2f87..0c7466e 100644 --- a/src/drunken-beans.md +++ b/src/drunken-beans.md @@ -27,3 +27,5 @@ Pinto beans cooking with beer, what beer you use can change the dish. ## Contribution - just a dude who likes cooking + +;tags: beans stew diff --git a/src/eggs.md b/src/eggs.md index 32dfae6..24dd033 100644 --- a/src/eggs.md +++ b/src/eggs.md @@ -48,3 +48,5 @@ of ham, mushrooms, chopped tomatoes, etc., before cracking the eggs in. - Martin Chrzanowski -- [website](https://m-chrzan.xyz), [donate](https://m-chrzan.xyz/crypto.html) - Deven Blake -- [website](http://www.trinity.moe) + +;tags: eggs basic diff --git a/src/flammkuchen.md b/src/flammkuchen.md index 56a6a47..ba007ad 100644 --- a/src/flammkuchen.md +++ b/src/flammkuchen.md @@ -26,3 +26,5 @@ I usually take it down from the baking tray and let it cool down for 2-5 minutes ## Contributors - Bernhard Egger -- [website](https://eggerbernhard.ch), [twitter](https://twitter.com/VisionBernie) + +;tags: french pork diff --git a/src/french-mustard-sauce-porkchops.md b/src/french-mustard-sauce-porkchops.md index b94a745..bf608bb 100644 --- a/src/french-mustard-sauce-porkchops.md +++ b/src/french-mustard-sauce-porkchops.md @@ -33,3 +33,5 @@ Serves 4 ## Contribution - anon btc: 1FJSSps89rEMtYm8Vvkp2uyTX9MFpZtcGy + +;tags: french pork quick diff --git a/src/gnocchi.md b/src/gnocchi.md index 99ba9a5..05cde14 100644 --- a/src/gnocchi.md +++ b/src/gnocchi.md @@ -29,3 +29,5 @@ They are substantial and can be roasted in butter and other ingredients. ## Contribution - Luke Smith -- [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) + +;tags: italian potato diff --git a/src/liverpate.md b/src/liverpate.md index cc5db8e..4fdd7cc 100644 --- a/src/liverpate.md +++ b/src/liverpate.md @@ -27,3 +27,5 @@ With beef liver, remove its membrane, that is on top, with your fingers. Cut it vod3 btc: 3DdikYnxPHv6Bz6qgXYoyxrcbikADqxwNd + +;tags: pate liver diff --git a/src/matcha-cookies.md b/src/matcha-cookies.md index a1779f3..be68d9c 100644 --- a/src/matcha-cookies.md +++ b/src/matcha-cookies.md @@ -33,3 +33,5 @@ Matcha is a type of tea leaf powder that has a beautiful vivid green color. Howe ## Contribution - Hamza Masood + +;tags: snack sweet desert diff --git a/src/miso-ginger-pork.md b/src/miso-ginger-pork.md index 7dbc6ac..12e8a0f 100644 --- a/src/miso-ginger-pork.md +++ b/src/miso-ginger-pork.md @@ -34,3 +34,5 @@ ## Contribution - Jon Paul Uritis - [website](https://jonpauluritis.com), [donate](http://paypal.me/jppope) + +;tags: japanese pork diff --git a/src/pancake.md b/src/pancake.md index fe65102..5fdcd7d 100644 --- a/src/pancake.md +++ b/src/pancake.md @@ -18,3 +18,5 @@ Here is a simple Pancake recipe ## Contribution BeFe + +;tags: quick basic diff --git a/src/pasta-sauce.md b/src/pasta-sauce.md index 4ade5a4..0d15fe8 100644 --- a/src/pasta-sauce.md +++ b/src/pasta-sauce.md @@ -21,3 +21,5 @@ Unlike modern store-bought sauces, there is no added sugar, only the subtle tast ## Contribution - Luke Smith -- [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) + +;tags: italian basic diff --git a/src/pasta.md b/src/pasta.md index 228e2f1..e91af65 100644 --- a/src/pasta.md +++ b/src/pasta.md @@ -29,3 +29,5 @@ but if you keep it in there for *too* long, it'll become mush. ## Contribution - Luke Smith -- [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) + +;tags: italian pasta quick basic diff --git a/src/pizza-dough.md b/src/pizza-dough.md index 7210a96..dafb5b6 100644 --- a/src/pizza-dough.md +++ b/src/pizza-dough.md @@ -20,3 +20,5 @@ if you use other flour like rye, you may need more liquid. ## Contribution BeFe + +;tags: basic diff --git a/src/portuguese-steak-with-beer-sauce.md b/src/portuguese-steak-with-beer-sauce.md index aba0c02..86c54a0 100644 --- a/src/portuguese-steak-with-beer-sauce.md +++ b/src/portuguese-steak-with-beer-sauce.md @@ -26,3 +26,5 @@ Bitoque (pronounced bee-tok) is a traditional quintessential Portuguese dish, it ## Contribution - Artur Mancha -- [Pleroma](https://pleroma.pt/@lisbonjoker) + +;tags: portuguese beef diff --git a/src/potato-and-eggplant-curry.md b/src/potato-and-eggplant-curry.md index d6e0955..58f3db2 100644 --- a/src/potato-and-eggplant-curry.md +++ b/src/potato-and-eggplant-curry.md @@ -38,3 +38,5 @@ A simple and tasty curry that is easy to customise. ## Contribution - Luke Chadwick - [website](https://lukechadwick.com) + +;tags: indian curry potato diff --git a/src/rice.md b/src/rice.md index 5ffff9e..13e4c4d 100644 --- a/src/rice.md +++ b/src/rice.md @@ -29,3 +29,5 @@ For Mexican rice, you might want to avoid cooking in stock to avoid taste clashe ## Contribution - Luke Smith -- [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) + +;tags: basic rice diff --git a/src/sauerkraut.md b/src/sauerkraut.md index 2e707b1..59d44fe 100644 --- a/src/sauerkraut.md +++ b/src/sauerkraut.md @@ -20,3 +20,5 @@ Sauerkraut is a based lacto-fermented food that is healthy and has a long shelf ## Contribution - Andrej Kirchmaier, XMR: 53QjcCVACp4Fuc5cULMoa8GyS8jyuwLteSihhoAkuezfBMSpnwsQgZ2Mu1cha2fpG8AZqtAwdHmZB6hNqk3K4485HrKQFyS + +;tags: german cabbage diff --git a/src/stroganoff.md b/src/stroganoff.md index ffc03ea..5d0fadc 100644 --- a/src/stroganoff.md +++ b/src/stroganoff.md @@ -30,3 +30,5 @@ This is American-style stroganoff. ## Contribution - Luke Smith -- [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) + +;tags: american beef diff --git a/src/tuscan-style-pork-roast.md b/src/tuscan-style-pork-roast.md index d8f3302..9e5b476 100644 --- a/src/tuscan-style-pork-roast.md +++ b/src/tuscan-style-pork-roast.md @@ -41,3 +41,5 @@ I point out that ingredients need to be fresh, the olive oil high quality, the s ## Contribution - Tanner Wilcox – [gitlab](https://git.najer.info/twiclo), [donate](https://twil.cx/donate.txt) + +;tags: italian pork From 1d7d2b6ab801b1e8388a4d7ba751ec1e7f2729f7 Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Fri, 12 Mar 2021 11:55:40 +1100 Subject: [PATCH 04/22] fix - Set correct title on pages (remove leading '#') - Remove main title on recipe pages - Put metadata at the end of articles --- Makefile | 12 +++++++++--- templates/article_footer.html | 1 + templates/article_header.html | 2 -- templates/footer.html | 1 + templates/header.html | 6 +----- templates/index_header.html | 4 ++++ templates/tag_index_header.html | 5 ++++- 7 files changed, 20 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 8aa41a3..20b82e4 100644 --- a/Makefile +++ b/Makefile @@ -64,7 +64,9 @@ tags/%: $(BLOG_SRC)/%.md 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)"; \ + PAGE_TITLE="$(BLOG_TITLE)"; \ export TITLE; \ + export PAGE_TITLE; \ envsubst < templates/header.html > $@; \ envsubst < templates/index_header.html >> $@; \ envsubst < templates/tag_list_header.html >> $@; \ @@ -103,10 +105,12 @@ tagpages: $(TAGFILES) 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 $*"; \ + PAGE_TITLE="Articles tagged $* — $(BLOG_TITLE)"; \ TAGS="$*"; \ - export TITLE; \ + TITLE="$(BLOG_TITLE)"; \ + export PAGE_TITLE; \ export TAGS; \ + export TITLE; \ envsubst < templates/header.html > $@; \ envsubst < templates/tag_index_header.html >> $@; \ envsubst < templates/article_list_header.html >> $@; \ @@ -129,8 +133,10 @@ blog/@%.html: $(TAGFILES) $(addprefix templates/,$(addsuffix .html,header tag_in blog/%.html: $(BLOG_SRC)/%.md $(addprefix templates/,$(addsuffix .html,header article_header article_footer footer)) mkdir -p blog - TITLE="$(shell head -n1 $<)"; \ + TITLE="$(shell head -n1 $< | sed 's/^# \+//')"; \ export TITLE; \ + PAGE_TITLE="$${TITLE} — $(BLOG_TITLE)"; \ + export PAGE_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' -- "$<")"; \ diff --git a/templates/article_footer.html b/templates/article_footer.html index e69de29..331e55b 100644 --- a/templates/article_footer.html +++ b/templates/article_footer.html @@ -0,0 +1 @@ +

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

      diff --git a/templates/article_header.html b/templates/article_header.html index e66f98c..e69de29 100644 --- a/templates/article_header.html +++ b/templates/article_header.html @@ -1,2 +0,0 @@ -

      index

      -

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

      diff --git a/templates/footer.html b/templates/footer.html index b7cd6bf..a342f92 100644 --- a/templates/footer.html +++ b/templates/footer.html @@ -1,6 +1,7 @@

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

      diff --git a/templates/header.html b/templates/header.html index 9b6f9f4..7756d4f 100644 --- a/templates/header.html +++ b/templates/header.html @@ -3,10 +3,6 @@ - $TITLE + $PAGE_TITLE - diff --git a/templates/index_header.html b/templates/index_header.html index a222e9a..0026f08 100644 --- a/templates/index_header.html +++ b/templates/index_header.html @@ -1 +1,5 @@ +

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

      diff --git a/templates/tag_index_header.html b/templates/tag_index_header.html index 2d73153..57fd89f 100644 --- a/templates/tag_index_header.html +++ b/templates/tag_index_header.html @@ -1,2 +1,5 @@ -

      index

      +

      Filtering recipes tagged: $TAGS

      From 4a64717c9b6d2c65a392feaf2c95e41186ea69bd Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Fri, 12 Mar 2021 13:22:09 +1100 Subject: [PATCH 05/22] add data/ --- data/pix/bitcoin-based-cooking.webp | Bin 0 -> 558 bytes data/pix/mortar-and-pestle.webp | Bin 0 -> 54694 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/pix/bitcoin-based-cooking.webp create mode 100644 data/pix/mortar-and-pestle.webp diff --git a/data/pix/bitcoin-based-cooking.webp b/data/pix/bitcoin-based-cooking.webp new file mode 100644 index 0000000000000000000000000000000000000000..1c5c8afb36de7115f639af03fbf74d4e771271aa GIT binary patch literal 558 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 KyB){nql^H{?cyc? literal 0 HcmV?d00001 From 5708338d4a4328664c7e5c7f8666098b8189e14c Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Fri, 12 Mar 2021 13:23:36 +1100 Subject: [PATCH 06/22] update gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 1df25ee..5ae25cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ rss.xml atom.xml +blog +tags From 81ee1e91c4bc8d996e586eeff1eb6638656d3fc5 Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Sat, 13 Mar 2021 17:34:13 +1100 Subject: [PATCH 07/22] add taglist function --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 20b82e4..be6e800 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ BLOG_FEEDS ?= rss atom BLOG_SRC ?= articles -.PHONY: help init build deploy clean +.PHONY: help init build deploy clean taglist ARTICLES = $(shell git ls-tree HEAD --name-only -- $(BLOG_SRC)/ 2>/dev/null) TAGFILES = $(patsubst $(BLOG_SRC)/%.md,tags/%,$(ARTICLES)) @@ -184,3 +184,6 @@ blog/atom.xml: $(ARTICLES) "`sed -n '1d;/^$$/{2{d;b};q};p' < $$FILE`"; \ done >> $@ printf '\n' >> $@ + +taglist: + grep -RIh '^;tags:' src | cut -d' ' -f2- | tr ' ' '\n' | sort | uniq From 0be88c1d121090230c4f8957df5c9a6a351dd6f3 Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Sun, 14 Mar 2021 11:29:18 +1100 Subject: [PATCH 08/22] add/tag/rebase new articles --- src/banana-muffins-with-chocolate.md | 2 ++ src/caesar-salad.md | 2 ++ src/carbonara.md | 2 ++ src/chicken-pasta-casserole.md | 4 +++- src/croutons.md | 2 ++ src/fried-anglerfish-fillet.md | 2 ++ src/fried-potatoes.md | 2 ++ src/hangover-eggs.md | 2 ++ src/instant-tom-yam-kung-noodle-soup.md | 2 ++ src/japanese-noodle-soup.md | 4 +++- src/maque-choux.md | 2 ++ src/marinated-pork-steaks.md | 2 ++ src/oats.md | 2 ++ src/ragu.md | 2 ++ src/roesti.md | 2 ++ src/scandinavian-coffee-cake.md | 2 ++ src/sticky-porkchops.md | 2 ++ src/sweet-potato-fries.md | 2 ++ src/taco-meat.md | 1 + src/tortellini.md | 2 ++ src/tuna-sub.md | 2 ++ src/yogurt.md | 2 ++ 22 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/banana-muffins-with-chocolate.md b/src/banana-muffins-with-chocolate.md index 2f2c92a..0fd1541 100644 --- a/src/banana-muffins-with-chocolate.md +++ b/src/banana-muffins-with-chocolate.md @@ -25,3 +25,5 @@ ## Contribution - Łukasz Drukała - [website](https://masflam.com), [donate](https://masflam.com/#donate) + +;tags: desert sweet snack diff --git a/src/caesar-salad.md b/src/caesar-salad.md index 8352b33..ac58915 100644 --- a/src/caesar-salad.md +++ b/src/caesar-salad.md @@ -22,3 +22,5 @@ Caesar Salad is an easy and delicious meal for lunch or dinner. ## Contributors - gucko + +;tags: italian salad diff --git a/src/carbonara.md b/src/carbonara.md index 25efbd7..dba94f5 100644 --- a/src/carbonara.md +++ b/src/carbonara.md @@ -33,3 +33,5 @@ Add the guanciale back in and give it a quick toss to mix. Plate and optionally ## Contribution Peter Piontek + +;tags: italian pasta quick diff --git a/src/chicken-pasta-casserole.md b/src/chicken-pasta-casserole.md index 945d5b4..b6c7b70 100644 --- a/src/chicken-pasta-casserole.md +++ b/src/chicken-pasta-casserole.md @@ -27,4 +27,6 @@ Easy to throw together and transport for the working fellow. High in protein! ## Contribution -- Miika Nissi - [website](https://miikanissi.com) \ No newline at end of file +- Miika Nissi - [website](https://miikanissi.com) + +;tags: chicken italian pasta diff --git a/src/croutons.md b/src/croutons.md index 897e7c2..3982131 100644 --- a/src/croutons.md +++ b/src/croutons.md @@ -20,3 +20,5 @@ Croutons are an essential addition to many salads. They are delicious and easy ## Contributors - gucko + +;tags: basic french salad diff --git a/src/fried-anglerfish-fillet.md b/src/fried-anglerfish-fillet.md index a16bde3..224ccf1 100644 --- a/src/fried-anglerfish-fillet.md +++ b/src/fried-anglerfish-fillet.md @@ -34,3 +34,5 @@ This is a simple light-flavoured recipe. Anglerfish (I'm referring specifically ## Contribution by Shou, [website](https://shouganai.xyz) + +;tags: fish diff --git a/src/fried-potatoes.md b/src/fried-potatoes.md index c6e854b..53839e7 100644 --- a/src/fried-potatoes.md +++ b/src/fried-potatoes.md @@ -15,3 +15,5 @@ ## Contribution themisch - [website](http://k63fspwi7eekmjy7i3ofk425lseyftfrbikyjs5ndgrvzasxlh6hoiid.onion), [donate](http://k63fspwi7eekmjy7i3ofk425lseyftfrbikyjs5ndgrvzasxlh6hoiid.onion/donate.html) + +;tags: potato quick diff --git a/src/hangover-eggs.md b/src/hangover-eggs.md index d4f9693..49975bf 100644 --- a/src/hangover-eggs.md +++ b/src/hangover-eggs.md @@ -34,3 +34,5 @@ bite. ## Contributors - **Dr. Cat** -- [website](https://github.com/castrated) + +;tags: eggs snack quick diff --git a/src/instant-tom-yam-kung-noodle-soup.md b/src/instant-tom-yam-kung-noodle-soup.md index 9dc4425..ba3ea05 100644 --- a/src/instant-tom-yam-kung-noodle-soup.md +++ b/src/instant-tom-yam-kung-noodle-soup.md @@ -29,3 +29,5 @@ Pro tip: Squeeze some remaining lime juice into your drinking water. ## Contribution - Ting-Yun Huang, Ricky Lindén - [website](https://rickylinden.com), [donate](https://rickylinden.com/donate.html) + +;tags: thai quick soup diff --git a/src/japanese-noodle-soup.md b/src/japanese-noodle-soup.md index 9cb8d19..0268cb8 100644 --- a/src/japanese-noodle-soup.md +++ b/src/japanese-noodle-soup.md @@ -1,6 +1,6 @@ # Japanese Noodle Soup -![Japanese Noodle Soup](/pix/japanese-noodle-soup.webp) +![Japanese Noodle Soup](pix/japanese-noodle-soup.webp) This is a very easy and simple Japanese style ramen noodle soup. This is very cheap to make, and you can really customise this however you wish with the garnish. This is my own spin inspired by other recipes that I found. @@ -42,3 +42,5 @@ This is a very easy and simple Japanese style ramen noodle soup. This is very ch ## Contribution - Jake Keast - [website](https://jakekeast.xyz), xmr: 8BBKCQbL1xSKS8fWE257cVBzerYu1censWYUCncLppo6MPLd3u59ejYE9XMdW4CNL3DGgf1vjG5SHGDEJV95xtxW2wsaANo + +;tags: japanese chicken soup diff --git a/src/maque-choux.md b/src/maque-choux.md index b55f1ba..7b8cc83 100644 --- a/src/maque-choux.md +++ b/src/maque-choux.md @@ -24,3 +24,5 @@ a sausage dish. Pairs well with brown ales. ## Contributors - **Dr. Cat** -- [website](https://github.com/castrated/) + +;tags: american corn diff --git a/src/marinated-pork-steaks.md b/src/marinated-pork-steaks.md index 584f49a..d98a421 100644 --- a/src/marinated-pork-steaks.md +++ b/src/marinated-pork-steaks.md @@ -28,3 +28,5 @@ And just like that you got yourself some tasty pork steaks. ## Contribution - Ricky Lindén - [website](https://rickylinden.com), [donate](https://rickylinden.com/donate.html) + +;tags: pork diff --git a/src/oats.md b/src/oats.md index b146c7d..761ae87 100644 --- a/src/oats.md +++ b/src/oats.md @@ -41,3 +41,5 @@ size. My personal "standard serving" is 1/3 cup steel cut or 1/2 cup rolled ## Contribution - Martin Chrzanowski -- [website](https://m-chrzan.xyz), [donate](https://m-chrzan.xyz/crypto.html) + +;tags: sweet breakfast quick diff --git a/src/ragu.md b/src/ragu.md index fa6edd3..2d32f8b 100644 --- a/src/ragu.md +++ b/src/ragu.md @@ -38,3 +38,5 @@ Reduce heat to very low and add mix to the pan. Support the [site](https://based.cooking/pix/bitcoin-based-cooking.webp). Luke's Vultr referral credits won't last forever... + +;tags: italian pasta diff --git a/src/roesti.md b/src/roesti.md index 6f9161a..ff46329 100644 --- a/src/roesti.md +++ b/src/roesti.md @@ -30,3 +30,5 @@ Cooking time: ~45 minutes ## Contributors - **Alexander Bocken** -- [contact](mailto:alexander@bocken.org) + +;tags: swiss potato diff --git a/src/scandinavian-coffee-cake.md b/src/scandinavian-coffee-cake.md index 7f0a4de..cacb335 100644 --- a/src/scandinavian-coffee-cake.md +++ b/src/scandinavian-coffee-cake.md @@ -43,3 +43,5 @@ ## Contribution - Anonymous + +;tags: sweet desert diff --git a/src/sticky-porkchops.md b/src/sticky-porkchops.md index 1e0cdf3..51cfd88 100644 --- a/src/sticky-porkchops.md +++ b/src/sticky-porkchops.md @@ -28,3 +28,5 @@ Simple chinese inspired sticky porkchops. ## Contribution - Jake Keast - [website](https://jakekeast.xyz), xmr: 8BBKCQbL1xSKS8fWE257cVBzerYu1censWYUCncLppo6MPLd3u59ejYE9XMdW4CNL3DGgf1vjG5SHGDEJV95xtxW2wsaANo + +;tags: japanese pork soup diff --git a/src/sweet-potato-fries.md b/src/sweet-potato-fries.md index 21447ef..87101e3 100644 --- a/src/sweet-potato-fries.md +++ b/src/sweet-potato-fries.md @@ -31,3 +31,5 @@ A simple, tasty, and healthy carb based snack. ## Contribution Shane Kunz - [Website](https://shanekunz.com) + +;tags: potato snack diff --git a/src/taco-meat.md b/src/taco-meat.md index b0d7222..b6657b3 100644 --- a/src/taco-meat.md +++ b/src/taco-meat.md @@ -23,3 +23,4 @@ - Elias Howell -- [website](https://snarf.top) +;tags: mexican beef diff --git a/src/tortellini.md b/src/tortellini.md index 069086f..8ca4e64 100644 --- a/src/tortellini.md +++ b/src/tortellini.md @@ -23,3 +23,5 @@ ## Contribution - Teo Dragovic - [website](https://teodragovic.com) + +;tags: italian pasta quick diff --git a/src/tuna-sub.md b/src/tuna-sub.md index a03d66a..60ca446 100644 --- a/src/tuna-sub.md +++ b/src/tuna-sub.md @@ -26,3 +26,5 @@ Use the best tuna you can find. I like oil-packed but water is OK. Someone you k ## Contribution - I don't think you could call it that. + +;tags: fish sandwich quick diff --git a/src/yogurt.md b/src/yogurt.md index 1522c4d..24f37fc 100644 --- a/src/yogurt.md +++ b/src/yogurt.md @@ -21,3 +21,5 @@ ## Contribution - italian boy + +;tags: basic breakfast From d42399ae92a56146cca72d3421816ae730c26357 Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Sun, 14 Mar 2021 12:51:30 +1100 Subject: [PATCH 09/22] add list of tag links at the end of each recipe --- Makefile | 9 ++++++++- templates/tag_link.html | 1 + templates/tag_link_footer.html | 1 + templates/tag_link_header.html | 1 + 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 templates/tag_link.html create mode 100644 templates/tag_link_footer.html create mode 100644 templates/tag_link_header.html diff --git a/Makefile b/Makefile index be6e800..5021f9a 100644 --- a/Makefile +++ b/Makefile @@ -131,7 +131,7 @@ blog/@%.html: $(TAGFILES) $(addprefix templates/,$(addsuffix .html,header tag_in envsubst < templates/footer.html >> $@; \ -blog/%.html: $(BLOG_SRC)/%.md $(addprefix templates/,$(addsuffix .html,header article_header article_footer footer)) +blog/%.html: $(BLOG_SRC)/%.md $(addprefix templates/,$(addsuffix .html,header article_header tag_link_header tag_link tag_link_footer article_footer footer)) mkdir -p blog TITLE="$(shell head -n1 $< | sed 's/^# \+//')"; \ export TITLE; \ @@ -148,6 +148,13 @@ blog/%.html: $(BLOG_SRC)/%.md $(addprefix templates/,$(addsuffix .html,header ar envsubst < templates/header.html > $@; \ envsubst < templates/article_header.html >> $@; \ sed -e '/^;/d' < $< | markdown -f fencedcode >> $@; \ + envsubst < templates/tag_link_header.html >> $@; \ + for i in $${TAGS} ; do \ + TAG_NAME="$$i" \ + TAG_LINK="./@$$i.html" \ + envsubst < templates/tag_link.html >> $@; \ + done; \ + envsubst < templates/tag_link_footer.html >> $@; \ envsubst < templates/article_footer.html >> $@; \ envsubst < templates/footer.html >> $@; \ diff --git a/templates/tag_link.html b/templates/tag_link.html new file mode 100644 index 0000000..49cc68c --- /dev/null +++ b/templates/tag_link.html @@ -0,0 +1 @@ +$TAG_NAME diff --git a/templates/tag_link_footer.html b/templates/tag_link_footer.html new file mode 100644 index 0000000..38bf9e7 --- /dev/null +++ b/templates/tag_link_footer.html @@ -0,0 +1 @@ +

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

      Recipe tags: From 7bfb359a48b85c940c42215c0e5b46a88bce6a41 Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Sun, 14 Mar 2021 12:59:59 +1100 Subject: [PATCH 10/22] update config --- config | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config b/config index 651a0e3..22d82cd 100644 --- a/config +++ b/config @@ -1,5 +1,5 @@ -BLOG_TITLE:=based.cooking -BLOG_REMOTE:= +BLOG_TITLE:=Based Cooking +BLOG_REMOTE:=root@based.cooking:/var/www/cooking BLOG_DATE_FORMAT_INDEX:=%F -BLOG_DATE_FORMAT:=%F %H:%M +BLOG_DATE_FORMAT:=%F BLOG_SRC:=src From 69e861ba531e72c78242a7e1ffb33ae58c442e72 Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Sun, 14 Mar 2021 13:50:40 +1100 Subject: [PATCH 11/22] fix articles that crash the Makefile --- src/quesadilla.md | 2 +- src/roasted-chicken-breast.md | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/quesadilla.md b/src/quesadilla.md index b3638fc..f427869 100644 --- a/src/quesadilla.md +++ b/src/quesadilla.md @@ -1,4 +1,4 @@ -## Quesadilla +# Quesadilla A quick and easy meal, able to be taken anywhere, but be warned of its high empty carb counts. diff --git a/src/roasted-chicken-breast.md b/src/roasted-chicken-breast.md index 21f29b2..8c10fe1 100644 --- a/src/roasted-chicken-breast.md +++ b/src/roasted-chicken-breast.md @@ -1,4 +1,3 @@ - # Roasted chicken breast How to roast chicken breast with a "leave-in" probe thermometer. The thermometer ensures the chicken comes out juicy and delicious. @@ -23,4 +22,4 @@ How to roast chicken breast with a "leave-in" probe thermometer. The thermometer ## Contribution -- Michael - [website](https://murphym.dev/) \ No newline at end of file +- Michael - [website](https://murphym.dev/) From 05a1a7b5eb3a8b8a37ecfb6e8b5801e03f5e47d1 Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Sun, 14 Mar 2021 13:51:04 +1100 Subject: [PATCH 12/22] fix bug when article deleted and re-added later --- Makefile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 5021f9a..b835caa 100644 --- a/Makefile +++ b/Makefile @@ -81,9 +81,10 @@ blog/index.html: $(ARTICLES) $(TAGFILES) $(addprefix templates/,$(addsuffix .htm envsubst < templates/tag_list_footer.html >> $@; \ envsubst < templates/article_list_header.html >> $@; \ first=true; \ + echo $(ARTICLES); \ 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"; \ + git log -n 1 --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" \ @@ -117,7 +118,7 @@ blog/@%.html: $(TAGFILES) $(addprefix templates/,$(addsuffix .html,header tag_in 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"; \ + git log -n 1 --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" \ @@ -139,7 +140,7 @@ blog/%.html: $(BLOG_SRC)/%.md $(addprefix templates/,$(addsuffix .html,header ar export PAGE_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' -- "$<")"; \ + DATE_POSTED="$(shell git log -n 1 --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; \ @@ -163,7 +164,7 @@ blog/rss.xml: $(ARTICLES) "$(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"; \ + git log -n 1 --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`" \ @@ -179,7 +180,7 @@ blog/atom.xml: $(ARTICLES) "$(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"; \ + git log -n 1 --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`" \ From 071dea97317e0b81a659a9d8aed31ee421833ca7 Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Sun, 14 Mar 2021 14:17:37 +1100 Subject: [PATCH 13/22] tag new articles --- src/banana-pancakes.md | 2 ++ src/beef-goulash.md | 2 ++ src/cheesy-meatballs.md | 2 ++ src/country-skillet.md | 2 ++ src/creamy-mashed-potatoes.md | 2 ++ src/ginataang-kalabasa.md | 2 ++ src/guacamole.md | 2 ++ src/hamburger-patties.md | 1 + src/hellfire-steak.md | 2 ++ src/hummus.md | 2 ++ src/ketchup.md | 2 ++ src/merchants-buckwheat.md | 2 ++ src/oaty-pancakes.md | 2 ++ src/omelet.md | 2 ++ src/pan-seared-chicken.md | 2 ++ src/parmesan-potatoes.md | 2 ++ src/pasta-navy-style.md | 2 ++ src/pasta-sauce.md | 2 +- src/peanut-butter.md | 2 ++ src/pork-based-chili-con-carne.md | 2 ++ src/quesadilla.md | 2 ++ src/quickbreakfastspaghetti.md | 8 +++++--- src/refried-beans.md | 2 ++ src/roasted-chicken-breast.md | 18 ++++++++++-------- src/simple-sauce.md | 2 ++ src/spaghetti-and-meatballs.md | 2 ++ src/sunday-milkshake.md | 2 ++ 27 files changed, 63 insertions(+), 12 deletions(-) diff --git a/src/banana-pancakes.md b/src/banana-pancakes.md index 2c89844..49a9e72 100644 --- a/src/banana-pancakes.md +++ b/src/banana-pancakes.md @@ -26,3 +26,5 @@ Either eat the pancakes as they get ready or put a plate in a preheated oven (lo ## Contribution - Ricky Lindén - [website](https://rickylinden.com), [donate](https://rickylinden.com/donate.html) + +;tags: breakfast quick sweet diff --git a/src/beef-goulash.md b/src/beef-goulash.md index abb365e..d367efe 100644 --- a/src/beef-goulash.md +++ b/src/beef-goulash.md @@ -53,3 +53,5 @@ Originally published at [https://www.yaroslavps.com/food/beef-goulash/](https:// - Yaroslav de la Peña Smirnov — [website](https://www.yaroslavps.com/), [other website](https://saucesource.cc/), [donate](https://www.yaroslavps.com/donate) + +;tags: hungarian beef diff --git a/src/cheesy-meatballs.md b/src/cheesy-meatballs.md index b4cb587..a130c09 100644 --- a/src/cheesy-meatballs.md +++ b/src/cheesy-meatballs.md @@ -59,3 +59,5 @@ Originally published at [https://www.yaroslavps.com/food/cheesy-meatballs/](http - Yaroslav de la Peña Smirnov — [website](https://www.yaroslavps.com/), [other website](https://saucesource.cc/), [donate](https://www.yaroslavps.com/donate) + +;tags: beef diff --git a/src/country-skillet.md b/src/country-skillet.md index 5b1fb1b..c0f6f3f 100644 --- a/src/country-skillet.md +++ b/src/country-skillet.md @@ -66,3 +66,5 @@ Originally published at [https://www.yaroslavps.com/food/country-breakfast-skill - Yaroslav de la Peña Smirnov — [website](https://www.yaroslavps.com/), [other website](https://saucesource.cc/), [donate](https://www.yaroslavps.com/donate) + +;tags: american breakfast pork diff --git a/src/creamy-mashed-potatoes.md b/src/creamy-mashed-potatoes.md index 60002f1..1317dbd 100644 --- a/src/creamy-mashed-potatoes.md +++ b/src/creamy-mashed-potatoes.md @@ -53,3 +53,5 @@ Originally published at [https://www.yaroslavps.com/food/creamy-mashed-potatoes/ - Yaroslav de la Peña Smirnov — [website](https://www.yaroslavps.com/), [other website](https://saucesource.cc/), [donate](https://www.yaroslavps.com/donate) + +;tags: potato side diff --git a/src/ginataang-kalabasa.md b/src/ginataang-kalabasa.md index e9a2fc6..44ade7d 100644 --- a/src/ginataang-kalabasa.md +++ b/src/ginataang-kalabasa.md @@ -24,3 +24,5 @@ Or "Squash in Coconut Milk". This is a common Filipino dish. ## Contribution - Jacob Smith - [website](https://jacobwsmith.xyz) + +;tags: filipino squash diff --git a/src/guacamole.md b/src/guacamole.md index 873a3f2..db072b1 100644 --- a/src/guacamole.md +++ b/src/guacamole.md @@ -36,3 +36,5 @@ Originally published at [https://www.yaroslavps.com/food/fresh-guacamole/](https - Yaroslav de la Peña Smirnov — [website](https://www.yaroslavps.com/), [other website](https://saucesource.cc/), [donate](https://www.yaroslavps.com/donate) + +;tags: mexican spread snack diff --git a/src/hamburger-patties.md b/src/hamburger-patties.md index 0a27dac..477b522 100644 --- a/src/hamburger-patties.md +++ b/src/hamburger-patties.md @@ -25,3 +25,4 @@ - Anonymous +;tags: american quick beef sandwich diff --git a/src/hellfire-steak.md b/src/hellfire-steak.md index b48b010..08aee3d 100644 --- a/src/hellfire-steak.md +++ b/src/hellfire-steak.md @@ -20,3 +20,5 @@ I first learned this recipe from a Bishop I had growing up. It produces quite a ## Contribution - Jacob Smith - [website](https://jacobwsmith.xyz) + +;tags: beef quick diff --git a/src/hummus.md b/src/hummus.md index 73fdd9c..d54f54b 100644 --- a/src/hummus.md +++ b/src/hummus.md @@ -17,3 +17,5 @@ ## Contribution - Jacob Smith - [website](https://jacobwsmith.xyz) + +;tags: basic snack diff --git a/src/ketchup.md b/src/ketchup.md index e1a33f3..512c8b5 100644 --- a/src/ketchup.md +++ b/src/ketchup.md @@ -29,3 +29,5 @@ ## Contribution - Anonymous + +;tags: basic sauce diff --git a/src/merchants-buckwheat.md b/src/merchants-buckwheat.md index d707e70..7c5bfda 100644 --- a/src/merchants-buckwheat.md +++ b/src/merchants-buckwheat.md @@ -49,3 +49,5 @@ Originally published at [https://www.yaroslavps.com/food/merchants-buckwheat/](h - Yaroslav de la Peña Smirnov — [website](https://www.yaroslavps.com/), [other website](https://saucesource.cc/), [donate](https://www.yaroslavps.com/donate) + +;tags: russian pork diff --git a/src/oaty-pancakes.md b/src/oaty-pancakes.md index b764cf1..1e9d8b8 100644 --- a/src/oaty-pancakes.md +++ b/src/oaty-pancakes.md @@ -39,3 +39,5 @@ and serve bacon or sausages alongside if you like. ## Contribution Puremana + +;tags: breakfast quick sweet diff --git a/src/omelet.md b/src/omelet.md index ae3347b..001dff7 100644 --- a/src/omelet.md +++ b/src/omelet.md @@ -36,3 +36,5 @@ ## Contribution - Anonymous + +;tags: eggs quick diff --git a/src/pan-seared-chicken.md b/src/pan-seared-chicken.md index aaef8c0..2945223 100644 --- a/src/pan-seared-chicken.md +++ b/src/pan-seared-chicken.md @@ -39,3 +39,5 @@ Originally published at [https://www.yaroslavps.com/food/pan-seared-chicken-file - Yaroslav de la Peña Smirnov — [website](https://www.yaroslavps.com/), [other website](https://saucesource.cc/), [donate](https://www.yaroslavps.com/donate) + +;tags: chicken diff --git a/src/parmesan-potatoes.md b/src/parmesan-potatoes.md index 8274856..b31efdb 100644 --- a/src/parmesan-potatoes.md +++ b/src/parmesan-potatoes.md @@ -37,3 +37,5 @@ Originally published at [https://www.yaroslavps.com/food/parmesan-potatoes/](htt - Yaroslav de la Peña Smirnov — [website](https://www.yaroslavps.com/), [other website](https://saucesource.cc/), [donate](https://www.yaroslavps.com/donate) + +;tags: potato side diff --git a/src/pasta-navy-style.md b/src/pasta-navy-style.md index d81e316..964d365 100644 --- a/src/pasta-navy-style.md +++ b/src/pasta-navy-style.md @@ -49,3 +49,5 @@ Originally published at [https://www.yaroslavps.com/food/navy-style-pasta/](http - Yaroslav de la Peña Smirnov — [website](https://www.yaroslavps.com/), [other website](https://saucesource.cc/), [donate](https://www.yaroslavps.com/donate) + +;tags: russian pasta beef diff --git a/src/pasta-sauce.md b/src/pasta-sauce.md index 0d15fe8..c0f9ca4 100644 --- a/src/pasta-sauce.md +++ b/src/pasta-sauce.md @@ -22,4 +22,4 @@ Unlike modern store-bought sauces, there is no added sugar, only the subtle tast - Luke Smith -- [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) -;tags: italian basic +;tags: italian basic sauce diff --git a/src/peanut-butter.md b/src/peanut-butter.md index 1780711..465af3a 100644 --- a/src/peanut-butter.md +++ b/src/peanut-butter.md @@ -13,3 +13,5 @@ ## Contribution - Jacob Smith - [website](https://jacobwsmith.xyz) + +;tags: spread snack diff --git a/src/pork-based-chili-con-carne.md b/src/pork-based-chili-con-carne.md index d0fb3ac..2e65c1f 100644 --- a/src/pork-based-chili-con-carne.md +++ b/src/pork-based-chili-con-carne.md @@ -37,3 +37,5 @@ Mince should be broken up well before cooking. ## Contribution jacobsiggins.co.uk + +;tags: mexican beans pork diff --git a/src/quesadilla.md b/src/quesadilla.md index f427869..5902565 100644 --- a/src/quesadilla.md +++ b/src/quesadilla.md @@ -26,3 +26,5 @@ Cooking time: ~5 minutes ## Contributors - peebowo + +;tags: mexican quick diff --git a/src/quickbreakfastspaghetti.md b/src/quickbreakfastspaghetti.md index 78872b8..b3f8f6d 100644 --- a/src/quickbreakfastspaghetti.md +++ b/src/quickbreakfastspaghetti.md @@ -2,13 +2,13 @@ A quick breakfast spaghetti recipe that covers a healthy amount of carbs, fat, and spices. Eggs and/or bacon can be added to cover some protein, you should cook those while the boiler is cooking -the speghatti for time efficiency. +the spaghetti for time efficiency. ## Ingredients - Spaghetti (any kind you prefer) - Ground spices (I like to use cumin, tumeric, paprika, and garlic) -- Tomato Paste/Sauce (preferably one with basil and without perservatives) +- Tomato Paste/Sauce (preferably one with basil and without preservative) - Extra Virgin Olive Oil ## Directions @@ -16,7 +16,7 @@ the speghatti for time efficiency. 1. Boil some water fully and prepare a pot. 2. While the water is boiling, add all your spices in the pot with the spaghetti on top. 3. Pour the boiled water on the spaghetti to make it soft so you can immerse it fully in the water. -4. Mix thouroughly the water with the spices and salt and pepper if needed. +4. Mix thoroughly the water with the spices and salt and pepper if needed. 5. Place the pot on the stove, keep it boiling, and stir every minute or two for 8 minutes. 6. It should take no more than 8 minutes, but you can check if it is fully cooked by tasting one peice at a time. @@ -31,3 +31,5 @@ the speghatti for time efficiency. ## Contribution - Sadoon AlBader - [website](https://soulserv.xyz) + +;tags: breakfast pasta diff --git a/src/refried-beans.md b/src/refried-beans.md index a04583b..ec10885 100644 --- a/src/refried-beans.md +++ b/src/refried-beans.md @@ -42,3 +42,5 @@ Originally published at [https://www.yaroslavps.com/food/refried-beans/](https:/ - Yaroslav de la Peña Smirnov — [website](https://www.yaroslavps.com/), [other website](https://saucesource.cc/), [donate](https://www.yaroslavps.com/donate) + +;tags: mexican beans diff --git a/src/roasted-chicken-breast.md b/src/roasted-chicken-breast.md index 8c10fe1..4792d24 100644 --- a/src/roasted-chicken-breast.md +++ b/src/roasted-chicken-breast.md @@ -11,15 +11,17 @@ How to roast chicken breast with a "leave-in" probe thermometer. The thermometer ## Directions 1. Fill a large bowl with enough water to submerge the chicken. Add salt to the water until it's fully saturated. Put the chicken under the water and let it sit for 20-40 minutes at room temperature. -1. Preheat the oven to 230°C / 450°F. -1. Remove the chicken from the water. Rinse it. Dry it. Put it in a roasting pan (you can use a casserole dish, oven-safe skillet, or baking pan too). -1. Brush the chicken with melted butter. For best results, brush all sides of the chicken breast. -1. Season with pepper and any optional seasoning. Season with salt last. -1. Insert the thermometer probe into the thickest part of the smallest breast. -1. Bake until the internal temperature reaches 68°C / 155°F. -1. Remove from the oven and immediately cover with foil leaving the probe inserted. Let the chicken sit for 10 minutes at room temperature. The chicken will continue to cook. It should reach at least 74°C / 165°F but if it doesn't, see [this reddit post](https://www.reddit.com/r/Cooking/comments/49opyx/cooking_chicken_to_temps_below_165_is_it_safe/) about food safety when cooking chicken to less than 165°F. -1. Serve +2. Preheat the oven to 230°C / 450°F. +3. Remove the chicken from the water. Rinse it. Dry it. Put it in a roasting pan (you can use a casserole dish, oven-safe skillet, or baking pan too). +4. Brush the chicken with melted butter. For best results, brush all sides of the chicken breast. +5. Season with pepper and any optional seasoning. Season with salt last. +6. Insert the thermometer probe into the thickest part of the smallest breast. +7. Bake until the internal temperature reaches 68°C / 155°F. +8. Remove from the oven and immediately cover with foil leaving the probe inserted. Let the chicken sit for 10 minutes at room temperature. The chicken will continue to cook. It should reach at least 74°C / 165°F but if it doesn't, see [this reddit post](https://www.reddit.com/r/Cooking/comments/49opyx/cooking_chicken_to_temps_below_165_is_it_safe/) about food safety when cooking chicken to less than 165°F. +9. Serve ## Contribution - Michael - [website](https://murphym.dev/) + +;tags: chicken diff --git a/src/simple-sauce.md b/src/simple-sauce.md index a6651c6..029180e 100644 --- a/src/simple-sauce.md +++ b/src/simple-sauce.md @@ -15,3 +15,5 @@ This is a simple and well known recipe. It goes by many names and this recipe is ## Contribution By el3ctr0lyte [github](https://github.com/el3ctr0lyte) + +;tags: basic quick sauce diff --git a/src/spaghetti-and-meatballs.md b/src/spaghetti-and-meatballs.md index eff8d26..9f39199 100644 --- a/src/spaghetti-and-meatballs.md +++ b/src/spaghetti-and-meatballs.md @@ -82,3 +82,5 @@ ## Contribution - ClosedGL - [GitHub](https://github.com/ClosedGL2) + +;tags: italian pasta beef pork diff --git a/src/sunday-milkshake.md b/src/sunday-milkshake.md index 50afdfa..807f9af 100644 --- a/src/sunday-milkshake.md +++ b/src/sunday-milkshake.md @@ -38,3 +38,5 @@ Originally published at [https://www.yaroslavps.com/food/sunday-morning-milkshak - Yaroslav de la Peña Smirnov — [website](https://www.yaroslavps.com/), [other website](https://saucesource.cc/), [donate](https://www.yaroslavps.com/donate) + +;tags: sweet breakfast drink From be0c2dd2ce70a728380738c7aa3cb964b3175234 Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Sun, 14 Mar 2021 14:24:08 +1100 Subject: [PATCH 14/22] get ready for merge --- Makefile | 2 +- templates/footer.html | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index b835caa..e7574dc 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ 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) + $(info make init|build|deploy|clean|taglist) init: mkdir -p $(BLOG_SRC) data templates diff --git a/templates/footer.html b/templates/footer.html index a342f92..54d33d7 100644 --- a/templates/footer.html +++ b/templates/footer.html @@ -1,8 +1,9 @@ -

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

      From 5da3d4fa492b9b33a88e1cbdffc674c45debe74b Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Sun, 14 Mar 2021 17:00:36 +1100 Subject: [PATCH 15/22] re-add/amend example.md and README.md --- README.md | 41 ++++++++++++++++++++++++++++++++++------- example.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 example.md diff --git a/README.md b/README.md index 95c4ab9..b0821cb 100644 --- a/README.md +++ b/README.md @@ -12,20 +12,51 @@ ## Rules for submission +- Recipes should start with a title, with a single `#`, *on the first line*. No + empty line at the top, not trailing line at the end. The file needs to be `\n` + terminated in linux-fashion (if you're on linux you don't need to care, it + should be automatic). - Recipes should be `.md` files in the `src/` directory. Look at already existing `.md` files for examples or see [example](example.md). - File names should be the name of the dish with words separated by hypens (`-`). Not underscores, and definitely not spaces. - Recipe must be based, i.e. good traditional and substantial food. Nothing ironic, meme-tier hyper-sugary, meat-substitute, etc. -- **ADD YOUR RECIPE TO THE LIST ON `index.md` OR NO ONE WILL EVER SEE IT.** - Don't include salt and pepper and other ubiquitous things in the ingredients list. **If you fail to do these things, I will close your submission and you will have to resubmit. I am tired of having to fix more than 50% of submissions.** +### Tags + +You can (and should) add tags at the end of your recipe. The syntax is: +``` +;tags: tag1 tag2 tag3 +``` + +The tag line should be a single line, at the end of the markdown file, preceded +by a blank line. + +Add between 1 and 4 tags, **prioritize existing tags**. As a general guideline, +add the country from which the recipe originates if the recipe is representative +of said country, using the adjective form (eg. *mexican*, *italian*, etc). Tag +the main ingredient if it's something slightly special. + +List of special, categorical tags to use if relevant: +- `basic`: for basic recipes that aren't meant to be stand alone but are supposed + to be incorporated in another recipe. +- `breakfast` +- `desert` +- `drink` +- `quick`: for recipes that can be cooked in under ~20 minutes. +- `side`: side dishes such as mash, fries, etc. +- `snack` +- `spread` + ### Images +Images are stored in `data/pix`. + Each recipe can have a title image at the top and perhaps several instructional images as absolutely necessary. @@ -43,8 +74,8 @@ they should be numbered with two digits like: `pix/chicken-parmesan-01.webp`, et ## About the site -The front page, for now, will just be a list of recipes -and when adding a `.md` page, please manually add a link to it in the list. +The front page, for now, will just be a list of recipes automatically generated +from the content of `src`. As more articles are added, the site will be reorganized, categorized or will implement server-side scripting or searches. This is not necessary yet though. @@ -52,10 +83,6 @@ This is not necessary yet though. I don't really want images of recipes on the mainpage yet. I'll think about how best to do it to minimize bandwidth if possible. -This site is generated with [Roman Zolotarev](https://www.romanzolotarev.com/)'s -[ssg5](https://www.romanzolotarev.com/ssg.html) which is also included in this -repo for replicability. - ## curl/Search function in the future I eventually want a command-line/curl interface to this site. diff --git a/example.md b/example.md new file mode 100644 index 0000000..a53988f --- /dev/null +++ b/example.md @@ -0,0 +1,42 @@ +# 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. + +Note that your commit name will be used to sign the recipe, so for full +anonymity either commit with a name that can't be traced back to you, or ask +someone else to commit for you. + +- Luke Smith - [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) +- Luke Smith (photo credit) - [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) + +;tags: tag1 tag2 tag3 (see README for tag guidelines) From db9156fb36bc887fe419595129d8ae235090ba83 Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Sun, 14 Mar 2021 19:19:24 +1100 Subject: [PATCH 16/22] sort articles by alphabetical order instead of date of publication --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e7574dc..f109224 100644 --- a/Makefile +++ b/Makefile @@ -85,7 +85,7 @@ blog/index.html: $(ARTICLES) $(TAGFILES) $(addprefix templates/,$(addsuffix .htm for f in $(ARTICLES); do \ printf '%s ' "$$f"; \ git log -n 1 --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 \ + done | sort | 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" \ @@ -119,7 +119,7 @@ blog/@%.html: $(TAGFILES) $(addprefix templates/,$(addsuffix .html,header tag_in for f in $(shell grep -FH '$*' $(TAGFILES) | sed 's,^tags/\([^:]*\):.*,$(BLOG_SRC)/\1.md,'); do \ printf '%s ' "$$f"; \ git log -n 1 --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 \ + done | sort | 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" \ From 14b0f53e1ee7c0ba204bb9518d76b4bbac0b3eab Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Sun, 14 Mar 2021 19:19:41 +1100 Subject: [PATCH 17/22] improve tags + fix more typos --- src/banana-bread.md | 2 +- src/banana-muffins-with-chocolate.md | 2 +- src/banana-pancakes.md | 2 +- src/beef-goulash.md | 2 +- src/chili-con-carne.md | 2 +- src/dried-tomato-plum-spread.md | 2 +- src/flammkuchen.md | 4 ++-- src/fried-potatoes.md | 2 +- src/gnocchi.md | 2 +- src/hummus.md | 2 +- src/oaty-pancakes.md | 2 +- src/pancake.md | 2 +- src/pasta.md | 2 +- src/peanut-butter.md | 2 +- src/rice.md | 2 +- src/roesti.md | 2 +- src/sauerkraut.md | 2 +- src/scandinavian-coffee-cake.md | 2 +- src/sweet-potato-fries.md | 2 +- 19 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/banana-bread.md b/src/banana-bread.md index 2751c96..437869a 100644 --- a/src/banana-bread.md +++ b/src/banana-bread.md @@ -34,4 +34,4 @@ Not too sweet. Great for when you have friends over for tea. - Martin Chrzanowski -- [website](https://m-chrzan.xyz), [donate](https://m-chrzan.xyz/crypto.html) -;tags: bread desert +;tags: bread desert sweet diff --git a/src/banana-muffins-with-chocolate.md b/src/banana-muffins-with-chocolate.md index 0fd1541..d02172b 100644 --- a/src/banana-muffins-with-chocolate.md +++ b/src/banana-muffins-with-chocolate.md @@ -26,4 +26,4 @@ - Łukasz Drukała - [website](https://masflam.com), [donate](https://masflam.com/#donate) -;tags: desert sweet snack +;tags: desert sweet snack cake diff --git a/src/banana-pancakes.md b/src/banana-pancakes.md index 49a9e72..102bd9c 100644 --- a/src/banana-pancakes.md +++ b/src/banana-pancakes.md @@ -27,4 +27,4 @@ Either eat the pancakes as they get ready or put a plate in a preheated oven (lo - Ricky Lindén - [website](https://rickylinden.com), [donate](https://rickylinden.com/donate.html) -;tags: breakfast quick sweet +;tags: breakfast quick sweet cake diff --git a/src/beef-goulash.md b/src/beef-goulash.md index d367efe..9327d9d 100644 --- a/src/beef-goulash.md +++ b/src/beef-goulash.md @@ -54,4 +54,4 @@ Originally published at [https://www.yaroslavps.com/food/beef-goulash/](https:// [other website](https://saucesource.cc/), [donate](https://www.yaroslavps.com/donate) -;tags: hungarian beef +;tags: hungarian beef stew diff --git a/src/chili-con-carne.md b/src/chili-con-carne.md index 4bdcce9..6bc1116 100644 --- a/src/chili-con-carne.md +++ b/src/chili-con-carne.md @@ -37,4 +37,4 @@ - Aaron Taylor -- [website](https://atay.me) -;tags: mexican beef +;tags: mexican beef beans diff --git a/src/dried-tomato-plum-spread.md b/src/dried-tomato-plum-spread.md index 551f8e3..20fb8bb 100644 --- a/src/dried-tomato-plum-spread.md +++ b/src/dried-tomato-plum-spread.md @@ -21,4 +21,4 @@ Quick and simple bread spread. - Patryk Niedźwiedziński - [website](https://niedzwiedzinski.cyou) -;tags: bread quick snack +;tags: bread quick snack spread diff --git a/src/flammkuchen.md b/src/flammkuchen.md index ba007ad..87f302c 100644 --- a/src/flammkuchen.md +++ b/src/flammkuchen.md @@ -1,4 +1,4 @@ -# Recipe name +# Flammkuchen A recipe for Flammkuchen a very thin crust pizza-like dish - it originates from Elsass, a French region close to where I grew up. I like the recipe because it takes 10 minutes to prepare and another 10 minutes to bake. It goes well with a green salad as a side. @@ -27,4 +27,4 @@ I usually take it down from the baking tray and let it cool down for 2-5 minutes - Bernhard Egger -- [website](https://eggerbernhard.ch), [twitter](https://twitter.com/VisionBernie) -;tags: french pork +;tags: french pork quick diff --git a/src/fried-potatoes.md b/src/fried-potatoes.md index 53839e7..836b0b9 100644 --- a/src/fried-potatoes.md +++ b/src/fried-potatoes.md @@ -16,4 +16,4 @@ ## Contribution themisch - [website](http://k63fspwi7eekmjy7i3ofk425lseyftfrbikyjs5ndgrvzasxlh6hoiid.onion), [donate](http://k63fspwi7eekmjy7i3ofk425lseyftfrbikyjs5ndgrvzasxlh6hoiid.onion/donate.html) -;tags: potato quick +;tags: potato quick side diff --git a/src/gnocchi.md b/src/gnocchi.md index 05cde14..5ccf5c1 100644 --- a/src/gnocchi.md +++ b/src/gnocchi.md @@ -30,4 +30,4 @@ They are substantial and can be roasted in butter and other ingredients. - Luke Smith -- [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) -;tags: italian potato +;tags: italian potato side diff --git a/src/hummus.md b/src/hummus.md index d54f54b..4757b71 100644 --- a/src/hummus.md +++ b/src/hummus.md @@ -18,4 +18,4 @@ - Jacob Smith - [website](https://jacobwsmith.xyz) -;tags: basic snack +;tags: basic snack spread diff --git a/src/oaty-pancakes.md b/src/oaty-pancakes.md index 1e9d8b8..44dbe3d 100644 --- a/src/oaty-pancakes.md +++ b/src/oaty-pancakes.md @@ -40,4 +40,4 @@ and serve bacon or sausages alongside if you like. Puremana -;tags: breakfast quick sweet +;tags: breakfast quick sweet cake diff --git a/src/pancake.md b/src/pancake.md index 5fdcd7d..f2c540d 100644 --- a/src/pancake.md +++ b/src/pancake.md @@ -19,4 +19,4 @@ Here is a simple Pancake recipe BeFe -;tags: quick basic +;tags: quick basic breakfast sweet cake diff --git a/src/pasta.md b/src/pasta.md index e91af65..62437c2 100644 --- a/src/pasta.md +++ b/src/pasta.md @@ -30,4 +30,4 @@ but if you keep it in there for *too* long, it'll become mush. - Luke Smith -- [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) -;tags: italian pasta quick basic +;tags: italian pasta quick basic side diff --git a/src/peanut-butter.md b/src/peanut-butter.md index 465af3a..131b016 100644 --- a/src/peanut-butter.md +++ b/src/peanut-butter.md @@ -14,4 +14,4 @@ - Jacob Smith - [website](https://jacobwsmith.xyz) -;tags: spread snack +;tags: spread snack basic diff --git a/src/rice.md b/src/rice.md index 13e4c4d..b913148 100644 --- a/src/rice.md +++ b/src/rice.md @@ -30,4 +30,4 @@ For Mexican rice, you might want to avoid cooking in stock to avoid taste clashe - Luke Smith -- [website](https://lukesmith.xyz), [donate](https://lukesmith.xyz/donate) -;tags: basic rice +;tags: basic rice side diff --git a/src/roesti.md b/src/roesti.md index ff46329..c3c693f 100644 --- a/src/roesti.md +++ b/src/roesti.md @@ -31,4 +31,4 @@ Cooking time: ~45 minutes - **Alexander Bocken** -- [contact](mailto:alexander@bocken.org) -;tags: swiss potato +;tags: swiss potato side diff --git a/src/sauerkraut.md b/src/sauerkraut.md index 59d44fe..7fa2e01 100644 --- a/src/sauerkraut.md +++ b/src/sauerkraut.md @@ -21,4 +21,4 @@ Sauerkraut is a based lacto-fermented food that is healthy and has a long shelf - Andrej Kirchmaier, XMR: 53QjcCVACp4Fuc5cULMoa8GyS8jyuwLteSihhoAkuezfBMSpnwsQgZ2Mu1cha2fpG8AZqtAwdHmZB6hNqk3K4485HrKQFyS -;tags: german cabbage +;tags: german cabbage side diff --git a/src/scandinavian-coffee-cake.md b/src/scandinavian-coffee-cake.md index cacb335..dffe18e 100644 --- a/src/scandinavian-coffee-cake.md +++ b/src/scandinavian-coffee-cake.md @@ -44,4 +44,4 @@ - Anonymous -;tags: sweet desert +;tags: sweet desert cake diff --git a/src/sweet-potato-fries.md b/src/sweet-potato-fries.md index 87101e3..72dd210 100644 --- a/src/sweet-potato-fries.md +++ b/src/sweet-potato-fries.md @@ -32,4 +32,4 @@ A simple, tasty, and healthy carb based snack. Shane Kunz - [Website](https://shanekunz.com) -;tags: potato snack +;tags: potato snack side From 63968f5cf9408543a92a83d6aab12f081e495d1b Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Mon, 15 Mar 2021 10:27:07 +1100 Subject: [PATCH 18/22] update config and upload.yml --- .github/workflows/upload.yml | 3 +-- config | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/upload.yml b/.github/workflows/upload.yml index c3f9547..5c736cc 100644 --- a/.github/workflows/upload.yml +++ b/.github/workflows/upload.yml @@ -29,5 +29,4 @@ jobs: script: | cd repo git pull --force origin master - mkdir -p dest - ./ssg5 src dest "Based Cooking (https://based.cooking)" "https://based.cooking" + make clean deploy diff --git a/config b/config index 22d82cd..8f06a8e 100644 --- a/config +++ b/config @@ -1,5 +1,6 @@ BLOG_TITLE:=Based Cooking -BLOG_REMOTE:=root@based.cooking:/var/www/cooking +BLOG_REMOTE:=/var/www/based.cooking BLOG_DATE_FORMAT_INDEX:=%F BLOG_DATE_FORMAT:=%F BLOG_SRC:=src +BLOG_URL_ROOT:=https://based.cooking/ From b1c404456d94019765a4a9d4ebbebc9bf750af8b Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Mon, 15 Mar 2021 10:48:41 +1100 Subject: [PATCH 19/22] add custom markdown index file --- Makefile | 3 +- index.md | 99 -------------------------------------------------------- 2 files changed, 2 insertions(+), 100 deletions(-) diff --git a/Makefile b/Makefile index f109224..6333cc2 100644 --- a/Makefile +++ b/Makefile @@ -61,7 +61,7 @@ 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)) +blog/index.html: index.md $(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)"; \ PAGE_TITLE="$(BLOG_TITLE)"; \ @@ -93,6 +93,7 @@ blog/index.html: $(ARTICLES) $(TAGFILES) $(addprefix templates/,$(addsuffix .htm envsubst < templates/article_entry.html; \ first=false; \ done >> $@; \ + markdown < index.md >> $@; \ envsubst < templates/article_list_footer.html >> $@; \ envsubst < templates/index_footer.html >> $@; \ envsubst < templates/footer.html >> $@; \ diff --git a/index.md b/index.md index 22aaf60..d8a0a59 100644 --- a/index.md +++ b/index.md @@ -1,102 +1,3 @@ -# 🍳 Based Cooking 🍲 - -Only based cooking. No ads, no tracking, nothing but based cooking. - -## Recipes - -- [Carbonara](carbonara.html) -- [Chicken Parmesan](chicken-parmesan.html) -- [Chicken Pasta Casserole](chicken-pasta-casserole.html) -- [Gnocchi](gnocchi.html) -- [Slow-cooked Chicken Tacos](chicken-tacos.html) -- [Beef Stroganoff](stroganoff.html) -- [Beef or Lamb Stew](beef-stew.html) -- [Beef Jerky](beef-jerky.html) -- [Hamburger Patties](hamburger-patties.html) -- [Portuguese Steak with Beer Sauce](portuguese-steak-with-beer-sauce.html) -- [Tuscan Style Pork Roast](tuscan-style-pork-roast.html) -- [Flemish Beer and Gingerbread Beef Stew](carbonade.html) -- [French Mustard Sauce Porkchops](french-mustard-sauce-porkchops.html) -- [Chicken, Tomato & Spinach Curry](chicken-tomato-spinach-curry.html) -- [Broiled Trevally](broiled-trevally.html) -- [Almeirim Stone Soup](almeirim-stone-soup.html) -- [Chicken Wings](chicken-wings.html) -- [Instant Tom Yam Kung Noodle Soup](instant-tom-yam-kung-noodle-soup.html) -- [Marinated Pork Steaks](marinated-pork-steaks.html) -- [Banana Pancakes](banana-pancakes.html) -- [Banana Bread](banana-bread.html) -- [Cacio e Pepe](cacio-e-pepe.html) -- [Potato and Eggplant Curry](potato-and-eggplant-curry.html) -- [Dried Tomato and Plums Bread Spread](dried-tomato-plum-spread.html) -- [Drunken Beans](drunken-beans.html) -- [Chili con Carne](chili-con-carne.html) -- [Matcha Cookies](matcha-cookies.html) -- [Miso Ginger Pork](miso-ginger-pork.html) -- [Pancakes](pancake.html) -- [Oaty Pancakes](oaty-pancakes.html) -- [Pizza Dough](pizza-dough.html) -- [Beef Tips with Mashed Potatoes](beef-tips.html) -- [Älplermagronen (Alpine macaroni)](aelplermagronen.html) -- [Rösti](roesti.html) -- [Chicken Biscuit Potpie](chicken-biscuit-potpie.html) -- [Liver Pate](liverpate.html) -- [Flammkuchen](flammkuchen.html) -- [Tortellini](tortellini.html) -- [Banana Muffins with Chocolate](banana-muffins-with-chocolate.html) -- [Taco Meat](taco-meat.html) -- [Fried Anglerfish Fillet](fried-anglerfish-fillet.html) -- [Hangover Eggs](hangover-eggs.html) -- [Caesar Salad](caesar-salad.html) -- [Maque Choux](maque-choux.html) -- [Ragù](ragu.html) -- [Roasted Chicken Breast](roasted-chicken-breast.html) -- [Scandinavian Coffee Cake](scandinavian-coffee-cake.html) -- [Japanese Noodle Soup](japanese-noodle-soup.html) -- [Sticky Porkchops](sticky-porkchops.html) -- [Pork-based Chili con Carne](pork-based-chili-con-carne.html) -- [Beef Goulash](beef-goulash.html) -- [Omelet](omelet.html) -- [Cheesy Meatballs with Tomato Sauce](cheesy-meatballs.html) -- [Country Breakfast Skillet](country-skillet.html) -- [Creamy Mashed Potatoes](creamy-mashed-potatoes.html) -- [Fresh Guacamole](guacamole.html) -- [Merchant's Buckwheat](merchants-buckwheat.html) -- [Pasta Navy Style](pasta-navy-style.html) -- [Pan-seared Chicken Fillet](pan-seared-chicken.html) -- [Parmesan Potatoes](parmesan-potatoes.html) -- [Refried Beans](refried-beans.html) -- [Sunday Morning Milkshake](sunday-milkshake.html) -- [Quesadilla](quesadilla.html) -- [Tuna Sub](tuna-sub.html) -- [Spaghetti and Meatballs](spaghetti-and-meatballs.html) -- [Peanut Butter](peanut-butter.html) -- [Hummus](hummus.html) -- [Ginataang Kalabasa](ginataang-kalabasa.html) -- [Simple Sauce](simple-sauce.html) -- [Hellfire Steak](hellfire-steak.html) - -## Basics - -- [Chicken Stock and Bone Broth](chicken-stock-bone-broth.html) -- [Pasta (store bought)](pasta.html) -- [Pasta Sauce](pasta-sauce.html) -- [Rice](rice.html) -- [Eggs](eggs.html) -- [Ketchup](ketchup.html) -- [Oats](oats.html) -- [Bread](bread.html) -- [Sauerkraut](sauerkraut.html) -- [Yogurt](yogurt.html) -- [Sweet Potato Fries](sweet-potato-fries.html) -- [Fried Potatoes](fried-potatoes.html) -- [Croutons](croutons.html) - -## More Info - -- [Table Salt vs. Kosher Salt?](salt.html) -- [Slow Cooking Benefits and Tips](slow-cooking-tips.html) -- [Get a Mortar and Pestle](mortar-and-pestle.html) - ## About this site Founded to provide a simple online cookbook without ads and obese web design. From 18d49745d55f46fbbfbc2f05cfc4fdbdb5d7be8a Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Mon, 15 Mar 2021 10:49:18 +1100 Subject: [PATCH 20/22] update footer --- templates/footer.html | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/templates/footer.html b/templates/footer.html index 54d33d7..58b5364 100644 --- a/templates/footer.html +++ b/templates/footer.html @@ -1,9 +1,10 @@ - +

      All site content is in the Public Domain.

      +

      Powered by blogit

      + From dba862393688f6fe151ef2659888629c2387e743 Mon Sep 17 00:00:00 2001 From: Luke Smith Date: Sun, 14 Mar 2021 20:27:16 -0400 Subject: [PATCH 21/22] pr template change --- .github/pull_request_template.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 389891f..b4b7a51 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -5,7 +5,8 @@ (`-`). Not underscores, and definitely not spaces. - Recipe must be based, i.e. good traditional and substantial food. Nothing ironic, meme-tier hyper-sugary, meat-substitute, etc. -- **ADD YOUR RECIPE TO THE LIST ON `index.md` OR NO ONE WILL EVER SEE IT.** +- Be sure to add a small number of relevant tags to your recipe (and remove + the dummy tags). Try to use already existing tags. - Don't include salt and pepper and other ubiquitous things in the ingredients list. --> From 455a6191f7d0f899c8e7eb24e60394c4de6e9546 Mon Sep 17 00:00:00 2001 From: Sylvain Gauthier Date: Mon, 15 Mar 2021 12:02:02 +1100 Subject: [PATCH 22/22] fix --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6333cc2..f632891 100644 --- a/Makefile +++ b/Makefile @@ -93,8 +93,8 @@ blog/index.html: index.md $(ARTICLES) $(TAGFILES) $(addprefix templates/,$(addsu envsubst < templates/article_entry.html; \ first=false; \ done >> $@; \ - markdown < index.md >> $@; \ envsubst < templates/article_list_footer.html >> $@; \ + markdown < index.md >> $@; \ envsubst < templates/index_footer.html >> $@; \ envsubst < templates/footer.html >> $@; \