--- comments: true --- # :gear: Development ## :smiley: Emoji Emoji are manually added to the front of ingredients and cookware to give the pages a little bit of flare. My hopes is that eventually this can be added to `cook-docs` as an automated task. For now, `emoji.yaml` can be used as reference. ```yaml title="emoji.yaml" --8<-- "includes/emoji.yaml" ``` ## :runner: Workflow Below is my current workflow for documenting recipes. ``` mermaid graph TD S[Change to or create ./cook/catetory dir]; A{Does the source
website exist?}; B[Import recipe using cook-import]; C[Manually write cook
file using micro editor]; D{Is the domain
supported by
cook-import?}; E[Visually check cook file]; F[Test output using cook recipe read command]; G[Download image file and rename
to same base name as cook file]; H[Run cook-docs in ./cook/category
to generate markdown file]; I[Manually check markdown file]; J[Move markdown file to ./docs/category]; K[Copy image to ./docs/assets/images
with same base file name as markdown file]; L[Add markdown file to mkdocs.yaml]; M[Locally run mkdocs to test mkdocs-material]; N[Commit and push to repo]; O{Is the file
correct?}; P[Edit cook file]; Q{Is the
output correct?}; R[Edit cook file]; T{Does the page
render correctly?}; U[CI GitHub Action workflow
deploys recipe site]; V{Is the image
format webp?}; W[Convert the image
to png using dwebp]; X[Check spelling using
spellchecker-cli]; Y[Check markdown links
using markdown-link-check]; Z{What is the
origin of the recipe?}; AB{What type of device
is being used?} AC[Use the GitHub mobile app
to create an issue] AD[Use the GitHub website
to create an issue] AE[Use GitHub Issues to
determine which recipe to document] AF[Close GitHub issue, if applicable.] AG[Identify a recipe
to be documented] AH[Document link in issue] AI[Take image of cookbook/index
card and add it to issue] AG --> AB; AB --> |Mobile|AC; AB --> |Desktop|AD; AC --> Z; AD --> Z; Z --> |Website|AH; Z --> |Cookbook/
Index Card|AI; AH --> AE; AI --> AE; AE --> S; A --> |Yes|B; A --> |No|C; B --> D; C --> F; D --> |Yes|E; D --> |No|C; E --> F; F --> Q; Q --> |Yes|G; H --> I; J --> K; K --> L; L --> M; I --> O; O --> |Yes|J; O --> |No|P; P --> H; Q --> |No|R; R --> F; S --> A; M --> T; T --> |Yes|X; X --> Y; Y --> N; T --> |No|P; N --> U; G --> V; V --> |Yes|W; V --> |No|H; W --> H; U --> AF; click B "#cook-import" click C "#cooklang-micro" click D "#cook-import" click F "#cooklang" click H "#cook-docs" click U "https://github.com/nicholaswilde/recipes/blob/main/.github/workflows/ci.yaml" click X "#spellchecker-cli" click Y "#markdown-link-check" ``` ## :hammer_and_wrench: Tools Tools used to develop this repository. !!! note All commands are run from the root of the repo unless otherwise specified. ### :rice: [`cooklang`][2] Used to generate shopping lists and manage recipes. ```shell title="Installation" brew tap cooklang/tap brew install cooklang/tap/cook ``` ```shell title="Usage" cook recipe read file.cook ``` ### :truck: [`cook-import`][11] Used to download recipe from website as a `cooklang` file, if possible. ```shell title="Usage" cook-import -l -f ``` ### :memo: [`cooklang-micro`][12] Used as a `cooklang` syntax highlighter for the [`micro`][13] editor ### :frame_with_picture: [`webp`][1] Used to convert images from `webp` to `png`. ```shell title="Installation" sudo apt install webp ``` ```shell title="Usage" dwebp file.webp -o file.png ``` ### :frame_with_picture: `avif` Used to convert images from `avif` to `jpg`. ```shell title="Installation" brew install imagemagick ``` ```shell title="Usage" magick -quality 75 input.avif output.jpg ``` ### :robot: [Task][8] Used to automate tasks. ```shell title="Installation" brew install go-task/tap/go-task ``` ```shell title="Usage" # List tasks task ``` ### :page_with_curl: [`cook-docs`][3] Used to generate markdown files from cooklang files. ```shell title="Installation" brew install nicholaswilde/tap/cook-docs ``` ```shell title="Usage" /recipes/cook/category$ cook-docs ``` ### :book: [Material for MkDocs][6] Used as theme for static site. ```shell title="Installation" pip install mkdocs-material mkdocs-minify-plugin ``` ### :book: [MkDocs][7] Used to generate static site. ```shell title="Installation" ( wget https://bootstrap.pypa.io/get-pip.py python get-pip.py pip install mkdocs ) ``` === "Task" ```shell title="Usage" task serve ``` === "Manual" ```shell title="Usage" mkdocs serve ``` ### :abc: [Spellchecker CLI][9] Used to check documentation spelling. ```shell title="Installation" npm install --global spellchecker-cli ``` === "Task" ```shell title="Usage" task spellcheck ``` === "Script" ```shell title="Usage" chmod +x ./scripts/spellcheck.sh ./scripts/spellcheck.sh ``` === "Manual" ```shell title="Usage" npx spellchecker -d dictionary.txt -f {"./cook/**/*.cook","./docs/**/*.md"} ``` ```shell title="Add to dictionary" echo "word to add" >> dictionary.txt ``` === "Task" ```shell title="Sort dictionary" task sort ``` === "Manual" ```shell title="Sort dictionary" sort dictionary.txt -u -o dictionary.txt ``` ### :link: [markdown-link-check][10] Used to check documentation links. ```shell title="Installation" npm install -g markdown-link-check ``` === "Task" ```shell title="Usage" task linkcheck ``` === "Script" ```shell title="Usage" chmod +x ./scripts/linkcheck.sh ./scripts/linkcheck.sh ``` === "Docker" ```shell title="Usage" docker run --rm -v /:/tmp:ro -i -w /tmp ghcr.io/tcort/markdown-link-check:stable "/tmp/path/to/file" -c "/tmp{{ .ROOT_DIR }}/mlc_config.json" ``` ### [Emojipedia][4] Website used to search for emoji shortcodes. ### [Emoji Combos][5] Website used to search for emoji contexts. [1]: [2]: [3]: [4]: [5]: [6]: [7]: [8]: [9]: [10]: [11]: [12]: [13]: