diff --git a/.gitignore b/.gitignore index 3046e3a30..d4c3c92cf 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ activities/.DS_Store protocols/.DS_Store +__pycache__ + .idea/ node_modules diff --git a/docs/how-to/validation.md b/docs/how-to/validation.md new file mode 100644 index 000000000..24a242f38 --- /dev/null +++ b/docs/how-to/validation.md @@ -0,0 +1,89 @@ +# Validation + +### Validating your schema + +If you want to validate a schema you have created: + +- install the reproschema python tools + +```bash +pip install reproschema +``` + +- run its `validate` command + +```bash +reproschema --log-level DEBUG validate PATH_TO_VALIDATE +``` + +!!! note + + You can validate a single file or all the files in a folder and its subfolder. + +### Automating validation + +If you are hosting your schema on a github repository, +you can automate the validation with a with GitHub CI workflow. + +For example if you repository is structured like this: + +```text +├── protocols +│ └── protocol-1.jsonld +├── activities +│ ├── items +│ │ └── item-1.jsonld +│ └── activity-1.jsonld +└── README.md +``` + +create a `.github/workflows/validate.yml` file in this repository. + +```text hl_lines="1-3" +├── .github # hidden github folder +│ └── workflows +│ └── validate.yml # file the actions used to validate your schema +├── protocols +│ └── protocol-1.jsonld +├── activities +│ ├── items +│ │ └── item-1.jsonld +│ └── activity-1.jsonld +└── README.md +``` + +Content of `validate.yml`: + +```yaml +name: validation + +on: + push: + branches: [ main ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: 3.12 + - name: Install dependencies + run: | + python -m pip install --upgrade pip setuptools + pip install reproschema-py + - name: validate + run: | + reproschema validate protocols + reproschema validate activities +``` + +!!! note + + Note that if you have created your schema + using the [reproschema cookie cutter](../user-guide/create-new-protocol.md) + then a validation workflow should already be included in your repository. diff --git a/docs/tutorials/tips-to-make-your-life-easier.md b/docs/tutorials/tips-to-make-your-life-easier.md deleted file mode 100644 index e5a668421..000000000 --- a/docs/tutorials/tips-to-make-your-life-easier.md +++ /dev/null @@ -1,60 +0,0 @@ -# Tips to make your life easier - -## Validating your JSON files - -First, make sure your syntax is in correct JSON-LD format. -Test all files with `@context` from command line: - -```bash -npm install -g jsonlint -grep -r "@context" . | cut -d: -f1 | xargs -I fname jsonlint -q fname -``` - -Or test individual files on the [json linter website](https://jsonlint.com/). - -## Validating your schema - -```bash -pip install reproschema requests_cache -reproschema -l DEBUG validate activities -``` - -## Automating those checks - -It can be quickly become cumbersome to type some of the commands described above -to always make sure the files you have created are valid. - -Thankfully though there are ways to automate those checks and integrate them -into your workflow. They rely on using some of the features of Github or Git. - -### Github actions - -The first one is using Github actions to let Github perform those checks for you -every time there some new content is added on a repository. - -To set those up you simply need to create a `.github/workflows` folder inside the repository where you are working. -This will contain all the workflows (a set of "actions") that Github has to run on this repository. -Each workflow is described by a `yml` file. - -For example you could create a `validate.yml` file in this repository. - -```text -├── .git # hidden git folder -├── .github # hidden github folder -│ └── workflows -│ └── validate.yml # file the actions used to validate your schema -├── protocols -│ ├── README-en.md -│ └── protocol-1.jsonld -├── activities -│ ├── items -│ │ └── item-1.jsonld -│ └── activity-1.jsonld -└── README.md -``` - -The content of `validate.yml` file would look like this. - -```yaml ---8<-- ".github/workflows/validate.yml" -``` diff --git a/mkdocs.yml b/mkdocs.yml index 5721e4d33..5ceff1c3d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -55,7 +55,8 @@ nav: - Finalize the protocol: "tutorials/finalizing-the-protocol.md" - Translate a questionnaire: "tutorials/translating-an-activity.md" - Demographic information : "tutorials/collecting-demographics-information.md" - - Tips to make your life easier: "tutorials/tips-to-make-your-life-easier.md" + - How to guides: + - how-to/validation.md - FAQ: "FAQ.md" - Contributing: "CONTRIBUTING.md"