Skip to content
Snippets Groups Projects
Commit 19be8dd6 authored by Remi  PLANEL's avatar Remi PLANEL
Browse files

Resolve "front-matter linter"

parent 347bd957
No related branches found
No related tags found
1 merge request!93Resolve "front-matter linter"
...@@ -26,6 +26,7 @@ cache: ...@@ -26,6 +26,7 @@ cache:
stages: stages:
- delete-release - delete-release
- build-df-cli - build-df-cli
- lint
- get-data - get-data
- deploy-meilisearch - deploy-meilisearch
- update-meilisearch-indexes - update-meilisearch-indexes
...@@ -61,10 +62,8 @@ build:df-wiki-cli: ...@@ -61,10 +62,8 @@ build:df-wiki-cli:
- echo "Build done ..." - echo "Build done ..."
- poetry publish --repository gitlab --skip-existing - poetry publish --repository gitlab --skip-existing
- echo "Publishing done!" - echo "Publishing done!"
rules: when: manual
- changes: allow_failure: true
- packages/df-wiki-cli/**/*.{py, toml} # ... or whatever your file extension is
allow_failure: false
################ DEPLOY MEILISEARCH ################# ################ DEPLOY MEILISEARCH #################
.deploy:meilisearch: .deploy:meilisearch:
...@@ -163,6 +162,20 @@ delete-meili-helm-release:prod: ...@@ -163,6 +162,20 @@ delete-meili-helm-release:prod:
- helm delete -n ${NAMESPACE} ${CI_PROJECT_NAME}-${CI_ENVIRONMENT_NAME}-meilisearch - helm delete -n ${NAMESPACE} ${CI_PROJECT_NAME}-${CI_ENVIRONMENT_NAME}-meilisearch
# lint
lint:
image: python:3.11-bullseye
stage: lint
before_script:
- pip install df-wiki-cli --index-url https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.pasteur.fr/api/v4/projects/5222/packages/pypi/simple
- cd content/3.defense-systems
script:
- find . -name '*.md' -print0 | xargs -0 -I {} df-wiki-cli content lint --file {}
when: manual
rules:
- if: $CI_COMMIT_BRANCH != "main"
# Update Meili search indexes # Update Meili search indexes
.update-meilisearch-index: .update-meilisearch-index:
......
import typer
from typing_extensions import Annotated
from typing import Optional, List
from pathlib import Path
from pydantic import BaseModel, ValidationError
from pydantic_yaml import parse_yaml_raw_as, to_yaml_str
import frontmatter
from enum import Enum
from rich.console import Console
from rich import print as rprint
from rich.layout import Layout
from rich.panel import Panel
console = Console()
app = typer.Typer()
class LayoutEnum(str, Enum):
article = "article"
db = "db"
class TableArticle(BaseModel):
doi: str
class TableColumns(BaseModel):
article: TableArticle
Sensor: str
Activator: str
Effector: str
PFAM: str
class RelevantAbstract(BaseModel):
doi: str
class FrontMatter(BaseModel):
title: str
layout: LayoutEnum
tableColumns: TableColumns
relevantAbstracts: List[RelevantAbstract]
contributors: List[str]
@app.command()
def lint(
file: Annotated[
Path,
typer.Option(
exists=False,
file_okay=True,
writable=True,
),
],
):
console.rule(f"[bold blue]{file.name}", style="blue")
with open(file) as f:
metadata, _ = frontmatter.parse(f.read())
# print(metadata)
try:
FrontMatter.model_validate(metadata)
except ValidationError as exc:
# print(repr(exc.errors()[0]["type"]))
# print(repr(exc))
# print(exc.errors())
# pprint(exc.errors(), expand_all=True)
for err in exc.errors():
console.print(
f"[red]{err['msg']} : {err['type']} {' -> '.join(err['loc'])}"
)
else:
console.print("[green] Everything is alright")
...@@ -3,11 +3,13 @@ from pathlib import Path ...@@ -3,11 +3,13 @@ from pathlib import Path
from typing_extensions import Annotated from typing_extensions import Annotated
from df_wiki_cli.articles import fetch_articles from df_wiki_cli.articles import fetch_articles
from df_wiki_cli.pfam import fetch_pfam from df_wiki_cli.pfam import fetch_pfam
from df_wiki_cli.meilisearch import main from df_wiki_cli.meilisearch import main as ms_main
from df_wiki_cli.content import main as content_main
# from df_wiki_cli.ms import main as ms_main # from df_wiki_cli.ms import main as ms_main
app = typer.Typer() app = typer.Typer()
app.add_typer(main.app, name="meilisearch") app.add_typer(ms_main.app, name="meilisearch")
app.add_typer(content_main.app, name="content")
@app.callback() @app.callback()
......
This diff is collapsed.
[tool.poetry] [tool.poetry]
name = "df-wiki-cli" name = "df-wiki-cli"
version = "0.1.0" version = "0.1.1"
description = "" description = ""
authors = ["Remi PLANEL <rplanel@pasteur.fr>"] authors = ["Remi PLANEL <rplanel@pasteur.fr>"]
readme = "README.md" readme = "README.md"
...@@ -15,6 +15,8 @@ pandas = "^2.1.2" ...@@ -15,6 +15,8 @@ pandas = "^2.1.2"
requests = "^2.31.0" requests = "^2.31.0"
meilisearch = "^0.28.4" meilisearch = "^0.28.4"
pydantic = "^2.4.2" pydantic = "^2.4.2"
pydantic-yaml = "^1.2.0"
python-frontmatter = "^1.0.1"
[tool.poetry.group.dev.dependencies] [tool.poetry.group.dev.dependencies]
...@@ -26,4 +28,4 @@ requires = ["poetry-core"] ...@@ -26,4 +28,4 @@ requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api" build-backend = "poetry.core.masonry.api"
[tool.poetry.scripts] [tool.poetry.scripts]
df-wiki-cli = "df_wiki_cli.main:app" df-wiki-cli = "df_wiki_cli.main:app"
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment