Compare commits

...

5 commits

Author SHA1 Message Date
b05610cae3 Dockerfile: fix entrypoint 2024-10-12 00:20:25 +02:00
ae3ee28ab4 README.md: update 2024-10-12 00:20:05 +02:00
8a9ae16ad3 .woodpecker: add 2024-10-12 00:12:20 +02:00
cc9206306a parsing: also accept short ingredients without amounts
for example 'oil' will now be allowed, previously it would have to be `1
spoon oil` when sometimes people don't know the amount
2024-10-12 00:12:09 +02:00
3e3de7ea59 pyproject.toml: add dependency required with newer lxml 2024-10-12 00:04:40 +02:00
5 changed files with 43 additions and 21 deletions

View file

@ -0,0 +1,15 @@
when:
- event: push
branch: main
steps:
- name: publish
image: woodpeckerci/plugin-docker-buildx
settings:
platforms: linux/amd64,linux/arm64/v8
repo: git.comfy.city/emi/comfy-recipes
registry: git.comfy.city
tags: latest
username: ${CI_REPO_OWNER}
password:
from_secret: registry_token

View file

@ -8,4 +8,4 @@ FROM python:3.13-alpine
COPY --from=build /build/dist/ /mnt
RUN pip install /mnt/comfy_recipes-*-py3-none-any.whl && \
rm -r /mnt
ENTRYPOINT ["/usr/bin/recipes-cli"]
ENTRYPOINT ["/usr/local/bin/recipes-cli"]

View file

@ -4,7 +4,13 @@ Comfy Recipes is a simple application that renders your recipes into HTML.
Documentation is available at <https://comfy.city/comfy-recipes/docs>
## Building the python package
## Running
```sh
docker run -v ./recipes:/recipes git.comfy.city/Emi/comfy-recipes:latest build /recipes
```
## Building
### Building the python package
Make sure you have hatchling and build modules installed.
```sh
python3 -m build
@ -15,17 +21,17 @@ The package can now be installed with
pip install dist/comfy-recipes-*-py3-none-any.whl
```
## Building the docker container
### Building the docker container
```sh
docker buildx build -t git.comfy.city/Emi/comfy-recipes:local .
```
The container can now be ran
```sh
docker run --rm git.comfy.city/Emi/comfy-recipes:local
docker run -v ./recipes:/recipes git.comfy.city/Emi/comfy-recipes:local build /recipes
```
## Building the documentation
### Building the documentation
```sh
cd docs
mdbook build

View file

@ -197,23 +197,24 @@ class IngredientInstance(Element):
def from_dict(cls, ctx: Context, dct: str | Dict[str, Any]) -> Self:
if isinstance(dct, str):
string = dct.strip()
p = re.compile(r"^(?:([0-9\.]+) ([a-zA-Z]+) )?([\w ]+)(?: \((.*)\))?$")
p = re.compile(r"^(?:([0-9\.]+) ([a-zA-Z]+) )+([\w ]+)(?: \((.*)\))?$")
match = p.match(string)
if match is None:
raise RuntimeError(
"ingredient {string} regex not matched, it should be in the format [amount(num) unit(string, one word)] name(string, any number of words) [(note(string))]"
)
amount = float(match.group(1))
unitstr = match.group(2)
amount = float(1)
unit = ctx.default_unit
if unit is not None:
unitx = ctx.units.get(unitstr)
if unitx is None:
ctx.issues.error(issues.ISSUE_UNKNOWN_UNIT, "unknown unit {unitstr}")
else:
unit = unitx
name = match.group(3)
note = match.group(4)
name = string
note = None
if match is not None:
amount = float(match.group(1))
unitstr = match.group(2)
if unit is not None:
unitx = ctx.units.get(unitstr)
if unitx is None:
ctx.issues.error(issues.ISSUE_UNKNOWN_UNIT, f"unknown unit {unitstr}")
else:
unit = unitx
name = match.group(3)
note = match.group(4)
if note is None:
note = ""
return cls(

View file

@ -9,7 +9,7 @@ description = "Smart recipe static site generator"
authors = [{ name = "Emi Vasilek", email = "emi.vasilek@gmail.com" }]
keywords = ["recipes", "recipe", "static site generator"]
requires-python = ">= 3.8"
dependencies = ["jsonschema", "jinja2", "PyYAML", "mistune", "lxml"]
dependencies = ["jsonschema", "jinja2", "PyYAML", "mistune", "lxml", "lxml_html_clean"]
classifiers = [
"Development Status :: 3 - Alpha",
"Programming Language :: Python",