diff --git a/.github/workflows/fly.yml b/.github/workflows/deploy.yml similarity index 100% rename from .github/workflows/fly.yml rename to .github/workflows/deploy.yml diff --git a/.github/workflows/validate_materials.yml b/.github/workflows/validate_materials.yml new file mode 100644 index 0000000..b90ff95 --- /dev/null +++ b/.github/workflows/validate_materials.yml @@ -0,0 +1,27 @@ +name: Validate Materials + +on: + push: + +jobs: + validate: + runs-on: ubuntu-latest + + steps: + - name: Check out the repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run validation script + run: | + export PYTHONPATH=$(pwd) # Adiciona o diretório raiz ao PYTHONPATH + python curadoria_coletiva/validate_materials.py diff --git a/curadoria_coletiva/materials/example.yml b/curadoria_coletiva/materials/example.yml index 43ccedf..e2e66f2 100644 --- a/curadoria_coletiva/materials/example.yml +++ b/curadoria_coletiva/materials/example.yml @@ -1,5 +1,4 @@ - titulo: Introdução ao Python - autor: Jane Doe url: https://example.com/python-course assuntos: - python diff --git a/curadoria_coletiva/validate_materials.py b/curadoria_coletiva/validate_materials.py index b75eaaa..2c37a07 100644 --- a/curadoria_coletiva/validate_materials.py +++ b/curadoria_coletiva/validate_materials.py @@ -1,3 +1,4 @@ +import sys import yaml from pydantic import ValidationError from typing import Set, List, Dict, Any @@ -19,9 +20,13 @@ def validate_materials_from_yaml(yaml_file: str) -> List[Dict[str, Any]]: validated_materials.append(material_data) print(f"Valid material found: {material_data.get('titulo')}") except ValidationError as e: - print(f"Validation error in material {material_data.get('titulo')}: {e}") + msg = "Validation error in material {material_data.get('titulo')}: {e}" + print(msg) + sys.exit(1, msg) except ValueError as e: - print(f"Value error in material {material_data.get('titulo')}: {e}") + msg = f"Value error in material {material_data.get('titulo')}: {e}" + print(msg) + sys.exit(1, msg) return validated_materials @@ -69,6 +74,6 @@ def _validate_material(material_data: Dict[str, Any], unique_titles: Set[str]) - if __name__ == "__main__": - input_yaml_file = "all_materials.yml" - collect_materials("materials", input_yaml_file) + input_yaml_file = "curadoria_coletiva/all_materials.yml" + collect_materials("curadoria_coletiva/materials", input_yaml_file) validate_materials_from_yaml(input_yaml_file)