From 4b20d15229497aed24d48b9cabbbf8defd17edf1 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Wed, 6 Nov 2024 09:52:25 -0500 Subject: [PATCH 01/12] chore(ci): Add a dependency updater action to run weekly --- .github/workflows/dependencies.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/dependencies.yml diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml new file mode 100644 index 00000000..6494f2a1 --- /dev/null +++ b/.github/workflows/dependencies.yml @@ -0,0 +1,18 @@ +--- +name: Update dependencies + +on: + schedule: + - cron: "15 15 * * 1" + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + molt: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: hasundue/molt-action@v1 From 55c2337180bdf2cf66971f6e310f61bceec8e8f9 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Wed, 6 Nov 2024 10:09:30 -0500 Subject: [PATCH 02/12] Revert "chore(ci): Add a dependency updater action to run weekly" --- .github/workflows/dependencies.yml | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 .github/workflows/dependencies.yml diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml deleted file mode 100644 index 6494f2a1..00000000 --- a/.github/workflows/dependencies.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -name: Update dependencies - -on: - schedule: - - cron: "15 15 * * 1" - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - molt: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: hasundue/molt-action@v1 From 13b192577b291b8a1cb387cdd4932eb7e611002c Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Wed, 6 Nov 2024 10:13:51 -0500 Subject: [PATCH 03/12] chore: Update dependencies --- deno.json | 22 +++---- deno.lock | 168 ++++++++++++++++++++++++++---------------------------- 2 files changed, 91 insertions(+), 99 deletions(-) diff --git a/deno.json b/deno.json index e48c0e5c..b75f875c 100644 --- a/deno.json +++ b/deno.json @@ -24,19 +24,19 @@ }, "imports": { "@ajv": "npm:ajv@8.17.1", - "@bids/schema": "jsr:@bids/schema@0.11.4-dev.8+6e2874ce", - "@cliffy/command": "jsr:@cliffy/command@1.0.0-rc.5", - "@cliffy/table": "jsr:@cliffy/table@1.0.0-rc.5", + "@bids/schema": "jsr:@bids/schema@0.11.4-dev.10+436d7cde", + "@cliffy/command": "jsr:@cliffy/command@1.0.0-rc.7", + "@cliffy/table": "jsr:@cliffy/table@1.0.0-rc.7", "@hed/validator": "npm:hed-validator@3.15.5", - "@ignore": "npm:ignore@5.3.2", - "@libs/xml": "jsr:@libs/xml@5.4.13", + "@ignore": "npm:ignore@6.0.2", + "@libs/xml": "jsr:@libs/xml@6.0.1", "@mango/nifti": "npm:@bids/nifti-reader-js@0.6.9", - "@std/assert": "jsr:@std/assert@1.0.2", - "@std/fmt": "jsr:@std/fmt@1.0.0", - "@std/fs": "jsr:@std/fs@1.0.1", - "@std/io": "jsr:@std/io@0.224.4", - "@std/log": "jsr:@std/log@0.224.5", - "@std/path": "jsr:@std/path@1.0.2", + "@std/assert": "jsr:@std/assert@1.0.7", + "@std/fmt": "jsr:@std/fmt@1.0.3", + "@std/fs": "jsr:@std/fs@1.0.5", + "@std/io": "jsr:@std/io@0.225.0", + "@std/log": "jsr:@std/log@0.224.9", + "@std/path": "jsr:@std/path@1.0.8", "@std/yaml": "jsr:@std/yaml@^1.0.4" }, "tasks": { diff --git a/deno.lock b/deno.lock index 582bb600..a9e547f5 100644 --- a/deno.lock +++ b/deno.lock @@ -1,78 +1,76 @@ { "version": "4", "specifiers": { - "jsr:@bids/schema@0.11.4-dev.6+d9c23eb0": "0.11.4-dev.6+d9c23eb0", - "jsr:@cliffy/command@1.0.0-rc.5": "1.0.0-rc.5", - "jsr:@cliffy/flags@1.0.0-rc.5": "1.0.0-rc.5", - "jsr:@cliffy/internal@1.0.0-rc.5": "1.0.0-rc.5", - "jsr:@cliffy/table@1.0.0-rc.5": "1.0.0-rc.5", - "jsr:@libs/typing@2": "2.9.0", - "jsr:@libs/xml@5.4.13": "5.4.13", + "jsr:@bids/schema@0.11.4-dev.10+436d7cde": "0.11.4-dev.10+436d7cde", + "jsr:@cliffy/command@1.0.0-rc.7": "1.0.0-rc.7", + "jsr:@cliffy/flags@1.0.0-rc.7": "1.0.0-rc.7", + "jsr:@cliffy/internal@1.0.0-rc.7": "1.0.0-rc.7", + "jsr:@cliffy/table@1.0.0-rc.7": "1.0.0-rc.7", + "jsr:@libs/typing@3": "3.1.0", + "jsr:@libs/xml@6.0.1": "6.0.1", "jsr:@luca/esbuild-deno-loader@0.10.3": "0.10.3", "jsr:@luca/esbuild-deno-loader@0.11.0": "0.11.0", - "jsr:@std/assert@1.0.2": "1.0.2", + "jsr:@std/assert@1.0.7": "1.0.7", "jsr:@std/assert@~0.213.1": "0.213.1", "jsr:@std/bytes@^1.0.2": "1.0.2", "jsr:@std/bytes@^1.0.2-rc.3": "1.0.2", - "jsr:@std/cli@1.0.0-rc.2": "1.0.0-rc.2", "jsr:@std/encoding@0.213": "0.213.1", "jsr:@std/encoding@^1.0.5": "1.0.5", - "jsr:@std/fmt@1.0.0": "1.0.0", - "jsr:@std/fmt@^1.0.0-rc.1": "1.0.0", - "jsr:@std/fmt@~0.225.4": "0.225.6", - "jsr:@std/fs@1.0.1": "1.0.1", - "jsr:@std/fs@^1.0.0-rc.5": "1.0.1", - "jsr:@std/internal@^1.0.1": "1.0.4", - "jsr:@std/io@0.224.4": "0.224.4", - "jsr:@std/io@~0.224.3": "0.224.4", + "jsr:@std/fmt@1.0.3": "1.0.3", + "jsr:@std/fmt@^1.0.2": "1.0.3", + "jsr:@std/fmt@~1.0.2": "1.0.3", + "jsr:@std/fs@1.0.5": "1.0.5", + "jsr:@std/fs@^1.0.4": "1.0.5", + "jsr:@std/internal@^1.0.5": "1.0.5", + "jsr:@std/io@0.225": "0.225.0", + "jsr:@std/io@0.225.0": "0.225.0", "jsr:@std/jsonc@0.213": "0.213.1", - "jsr:@std/log@0.224.5": "0.224.5", + "jsr:@std/log@0.224.9": "0.224.9", "jsr:@std/path@0.213": "0.213.1", - "jsr:@std/path@1.0.2": "1.0.2", - "jsr:@std/path@^1.0.2": "1.0.2", + "jsr:@std/path@1.0.8": "1.0.8", "jsr:@std/path@^1.0.6": "1.0.6", - "jsr:@std/text@1.0.0-rc.1": "1.0.0-rc.1", + "jsr:@std/path@^1.0.7": "1.0.8", + "jsr:@std/text@~1.0.7": "1.0.8", "jsr:@std/yaml@^1.0.4": "1.0.5", + "npm:@bids/nifti-reader-js@0.6.9": "0.6.9", "npm:ajv@8.17.1": "8.17.1", "npm:hed-validator@3.15.5": "3.15.5", - "npm:ignore@5.3.2": "5.3.2", - "npm:nifti-reader-js@0.6.8": "0.6.8" + "npm:ignore@6.0.2": "6.0.2" }, "jsr": { - "@bids/schema@0.11.4-dev.6+d9c23eb0": { - "integrity": "a0ac8687737bc5e3efa63c00df9c637596441feb2ff5ab243468ca84ea24fc6e" + "@bids/schema@0.11.4-dev.10+436d7cde": { + "integrity": "ad822d610054450b0b4b2fc71a654a415951e42aa4e753ede4eb550a62d04f50" }, - "@cliffy/command@1.0.0-rc.5": { - "integrity": "55e00a1d0ae38152fb275a89494a81ffb9b144eb9060107c0be5af46e1ba736c", + "@cliffy/command@1.0.0-rc.7": { + "integrity": "1288808d7a3cd18b86c24c2f920e47a6d954b7e23cadc35c8cbd78f8be41f0cd", "dependencies": [ "jsr:@cliffy/flags", "jsr:@cliffy/internal", "jsr:@cliffy/table", - "jsr:@std/fmt@~0.225.4", + "jsr:@std/fmt@~1.0.2", "jsr:@std/text" ] }, - "@cliffy/flags@1.0.0-rc.5": { - "integrity": "bd33b7b399e0af353f5516d87a2d552d46ee7e7f4a6f0c0bc65fcce750710217", + "@cliffy/flags@1.0.0-rc.7": { + "integrity": "318d9be98f6a6417b108e03dec427dea96cdd41a15beb21d2554ae6da450a781", "dependencies": [ "jsr:@std/text" ] }, - "@cliffy/internal@1.0.0-rc.5": { - "integrity": "1e8dca4fcfba1815bf1a899bb880e09f8b45284c352465ef8fb015887c1fc126" + "@cliffy/internal@1.0.0-rc.7": { + "integrity": "10412636ab3e67517d448be9eaab1b70c88eba9be22617b5d146257a11cc9b17" }, - "@cliffy/table@1.0.0-rc.5": { - "integrity": "2b3e1b4764bbb56b0c39aeba95bc0bb551d9bd4475fbb6d1ce368c08b7ef9eb3", + "@cliffy/table@1.0.0-rc.7": { + "integrity": "9fdd9776eda28a0b397981c400eeb1aa36da2371b43eefe12e6ff555290e3180", "dependencies": [ - "jsr:@std/cli", - "jsr:@std/fmt@~0.225.4" + "jsr:@std/fmt@~1.0.2" ] }, - "@libs/typing@2.9.0": { - "integrity": "ddf35ea652b807cd9b19b4f3f163fb5d76d57299053753fbd01ba8b02d9306ad" + "@libs/typing@3.1.0": { + "integrity": "091b59f57a99f84c9fccf8f59534f77f177705ac25183b575c83fd7aa6dcfafe" }, - "@libs/xml@5.4.13": { - "integrity": "995320d1ce4a29ced82233e5e46d47a880e338197bbd257a686bf9afcc3ac0e4", + "@libs/xml@6.0.1": { + "integrity": "64af4f93464c77c3e1158fb97c3657779ca554b14f38616b96cde31e22d8a309", "dependencies": [ "jsr:@libs/typing" ] @@ -96,8 +94,8 @@ "@std/assert@0.213.1": { "integrity": "24c28178b30c8e0782c18e8e94ea72b16282207569cdd10ffb9d1d26f2edebfe" }, - "@std/assert@1.0.2": { - "integrity": "ccacec332958126deaceb5c63ff8b4eaf9f5ed0eac9feccf124110435e59e49c", + "@std/assert@1.0.7": { + "integrity": "64ce9fac879e0b9f3042a89b3c3f8ccfc9c984391af19e2087513a79d73e28c3", "dependencies": [ "jsr:@std/internal" ] @@ -105,34 +103,28 @@ "@std/bytes@1.0.2": { "integrity": "fbdee322bbd8c599a6af186a1603b3355e59a5fb1baa139f8f4c3c9a1b3e3d57" }, - "@std/cli@1.0.0-rc.2": { - "integrity": "97dfae82b9f0e189768ebfa7a5da53375955b94bad0a1804f8e3b73563b03787" - }, "@std/encoding@0.213.1": { "integrity": "fcbb6928713dde941a18ca5db88ca1544d0755ec8fb20fe61e2dc8144b390c62" }, "@std/encoding@1.0.5": { "integrity": "ecf363d4fc25bd85bd915ff6733a7e79b67e0e7806334af15f4645c569fefc04" }, - "@std/fmt@0.225.6": { - "integrity": "aba6aea27f66813cecfd9484e074a9e9845782ab0685c030e453a8a70b37afc8" - }, - "@std/fmt@1.0.0": { - "integrity": "8a95c9fdbb61559418ccbc0f536080cf43341655e1444f9d375a66886ceaaa3d" + "@std/fmt@1.0.3": { + "integrity": "97765c16aa32245ff4e2204ecf7d8562496a3cb8592340a80e7e554e0bb9149f" }, - "@std/fs@1.0.1": { - "integrity": "d6914ca2c21abe591f733b31dbe6331e446815e513e2451b3b9e472daddfefcb", + "@std/fs@1.0.5": { + "integrity": "41806ad6823d0b5f275f9849a2640d87e4ef67c51ee1b8fb02426f55e02fd44e", "dependencies": [ - "jsr:@std/path@^1.0.2" + "jsr:@std/path@^1.0.7" ] }, - "@std/internal@1.0.4": { - "integrity": "62e8e4911527e5e4f307741a795c0b0a9e6958d0b3790716ae71ce085f755422" + "@std/internal@1.0.5": { + "integrity": "54a546004f769c1ac9e025abd15a76b6671ddc9687e2313b67376125650dc7ba" }, - "@std/io@0.224.4": { - "integrity": "bce1151765e4e70e376039fd72c71672b4d4aae363878a5ee3e58361b81197ec", + "@std/io@0.225.0": { + "integrity": "c1db7c5e5a231629b32d64b9a53139445b2ca640d828c26bf23e1c55f8c079b3", "dependencies": [ - "jsr:@std/bytes@^1.0.2-rc.3" + "jsr:@std/bytes@^1.0.2" ] }, "@std/jsonc@0.213.1": { @@ -141,12 +133,12 @@ "jsr:@std/assert@~0.213.1" ] }, - "@std/log@0.224.5": { - "integrity": "4612a45189438441bbd923a4cad1cce5c44c6c4a039195a3e8d831ce38894eee", + "@std/log@0.224.9": { + "integrity": "419d04e4d93e6b1a0205ac3f94809621cfec3d328d09fec9ec59cafa3b3fcaee", "dependencies": [ - "jsr:@std/fmt@^1.0.0-rc.1", - "jsr:@std/fs@^1.0.0-rc.5", - "jsr:@std/io@~0.224.3" + "jsr:@std/fmt@^1.0.2", + "jsr:@std/fs@^1.0.4", + "jsr:@std/io@0.225" ] }, "@std/path@0.213.1": { @@ -155,20 +147,26 @@ "jsr:@std/assert@~0.213.1" ] }, - "@std/path@1.0.2": { - "integrity": "a452174603f8c620bd278a380c596437a9eef50c891c64b85812f735245d9ec7" - }, "@std/path@1.0.6": { "integrity": "ab2c55f902b380cf28e0eec501b4906e4c1960d13f00e11cfbcd21de15f18fed" }, - "@std/text@1.0.0-rc.1": { - "integrity": "34c722203e87ee12792c8d4a0cd2ee0e001341cbce75b860fc21be19d62232b0" + "@std/path@1.0.8": { + "integrity": "548fa456bb6a04d3c1a1e7477986b6cffbce95102d0bb447c67c4ee70e0364be" + }, + "@std/text@1.0.8": { + "integrity": "40ba34caa095f393e78796e5eda37b8b4e2cc6cfd6f51f34658ad7487b1451e4" }, "@std/yaml@1.0.5": { "integrity": "71ba3d334305ee2149391931508b2c293a8490f94a337eef3a09cade1a2a2742" } }, "npm": { + "@bids/nifti-reader-js@0.6.9": { + "integrity": "sha512-3KWpGKrgUUvT5Bbl25K9TTQ77DRS5DUpcyhZlAblCPdP1YMy0tCzrxarRTixWM9tDN6sWUOBbf6zQpPyVe11Lw==", + "dependencies": [ + "fflate" + ] + }, "ajv@8.17.1": { "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dependencies": [ @@ -232,8 +230,8 @@ "ieee754@1.2.1": { "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, - "ignore@5.3.2": { - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" + "ignore@6.0.2": { + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==" }, "inherits@2.0.3": { "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" @@ -244,12 +242,6 @@ "lodash@4.17.21": { "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "nifti-reader-js@0.6.8": { - "integrity": "sha512-yIKNVzYFiUcSHazoR+sd6Ka7sUmZTabaVqJRFxbdlAKR1hnPBuNP71g3AyApo37nJ3k41c632QPij5q7gF1YPQ==", - "dependencies": [ - "fflate" - ] - }, "node-fetch@2.7.0": { "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": [ @@ -409,21 +401,21 @@ }, "workspace": { "dependencies": [ - "jsr:@bids/schema@0.11.4-dev.6+d9c23eb0", - "jsr:@cliffy/command@1.0.0-rc.5", - "jsr:@cliffy/table@1.0.0-rc.5", - "jsr:@libs/xml@5.4.13", - "jsr:@std/assert@1.0.2", - "jsr:@std/fmt@1.0.0", - "jsr:@std/fs@1.0.1", - "jsr:@std/io@0.224.4", - "jsr:@std/log@0.224.5", - "jsr:@std/path@1.0.2", + "jsr:@bids/schema@0.11.4-dev.10+436d7cde", + "jsr:@cliffy/command@1.0.0-rc.7", + "jsr:@cliffy/table@1.0.0-rc.7", + "jsr:@libs/xml@6.0.1", + "jsr:@std/assert@1.0.7", + "jsr:@std/fmt@1.0.3", + "jsr:@std/fs@1.0.5", + "jsr:@std/io@0.225.0", + "jsr:@std/log@0.224.9", + "jsr:@std/path@1.0.8", "jsr:@std/yaml@^1.0.4", + "npm:@bids/nifti-reader-js@0.6.9", "npm:ajv@8.17.1", "npm:hed-validator@3.15.5", - "npm:ignore@5.3.2", - "npm:nifti-reader-js@0.6.8" + "npm:ignore@6.0.2" ] } } From 55e5de60a6be6509d59a968b5079c74f1686d303 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Mon, 4 Nov 2024 16:58:03 -0500 Subject: [PATCH 04/12] doc: [RUN] sphinx-quickstart --- docs/Makefile | 20 ++++++++++++++++++++ docs/conf.py | 27 +++++++++++++++++++++++++++ docs/index.rst | 17 +++++++++++++++++ docs/make.bat | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 docs/Makefile create mode 100644 docs/conf.py create mode 100644 docs/index.rst create mode 100644 docs/make.bat diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 00000000..d4bb2cbb --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 00000000..fa9124ad --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,27 @@ +# Configuration file for the Sphinx documentation builder. +# +# For the full list of built-in configuration values, see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information + +project = 'BIDS Validator' +copyright = '2024, BIDS Contributors' +author = 'BIDS Contributors' + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +extensions = [] + +templates_path = ['_templates'] +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + + + +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output + +html_theme = 'alabaster' +html_static_path = ['_static'] diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 00000000..37ad64c6 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,17 @@ +.. BIDS Validator documentation master file, created by + sphinx-quickstart on Mon Nov 4 17:03:20 2024. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +BIDS Validator documentation +============================ + +Add your content using ``reStructuredText`` syntax. See the +`reStructuredText `_ +documentation for details. + + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 00000000..32bb2452 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.https://www.sphinx-doc.org/ + exit /b 1 +) + +if "%1" == "" goto help + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd From 17bcda5990e193cedd78dcaba7b61d3cab4b7fae Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Wed, 6 Nov 2024 20:33:16 -0500 Subject: [PATCH 05/12] Initial docs --- docs/_static/BIDS_black.svg | 92 ++++++++++++++++++++++++++ docs/_static/BIDS_white.svg | 92 ++++++++++++++++++++++++++ docs/_static/web_entrypoint_dark.png | Bin 0 -> 46809 bytes docs/_static/web_entrypoint_light.png | Bin 0 -> 50382 bytes docs/conf.py | 25 ++++++- docs/index.md | 39 +++++++++++ docs/index.rst | 17 ----- docs/requirements.txt | 4 ++ 8 files changed, 250 insertions(+), 19 deletions(-) create mode 100644 docs/_static/BIDS_black.svg create mode 100644 docs/_static/BIDS_white.svg create mode 100644 docs/_static/web_entrypoint_dark.png create mode 100644 docs/_static/web_entrypoint_light.png create mode 100644 docs/index.md delete mode 100644 docs/index.rst create mode 100644 docs/requirements.txt diff --git a/docs/_static/BIDS_black.svg b/docs/_static/BIDS_black.svg new file mode 100644 index 00000000..145f1f4e --- /dev/null +++ b/docs/_static/BIDS_black.svg @@ -0,0 +1,92 @@ + + + + + + + Ресурс 2 + + + + + + + + + + + + + + + Ресурс 2 + + + + diff --git a/docs/_static/BIDS_white.svg b/docs/_static/BIDS_white.svg new file mode 100644 index 00000000..763bf177 --- /dev/null +++ b/docs/_static/BIDS_white.svg @@ -0,0 +1,92 @@ + + + + + + + Ресурс 1 + + + + + + + + + + + + + + + Ресурс 1 + + + + diff --git a/docs/_static/web_entrypoint_dark.png b/docs/_static/web_entrypoint_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a6df0e7c7866e5fcd22ebbba617ace56242a0915 GIT binary patch literal 46809 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 U{^9b7?;9BGv@F)ORMGeU0c-A=2mk;8 literal 0 HcmV?d00001 diff --git a/docs/_static/web_entrypoint_light.png b/docs/_static/web_entrypoint_light.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1b8dba852cd7c98ff704efa0eb3eb728c36784 GIT binary patch literal 50382 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�J#wMm+Y03#PMq*)EyT}-L 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 literal 0 HcmV?d00001 diff --git a/docs/conf.py b/docs/conf.py index fa9124ad..110c27f3 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -13,7 +13,11 @@ # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration -extensions = [] +extensions = [ + # 'sphinx_js', + 'myst_parser', + 'sphinx_copybutton', +] templates_path = ['_templates'] exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] @@ -23,5 +27,22 @@ # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output -html_theme = 'alabaster' +html_theme = 'pydata_sphinx_theme' html_static_path = ['_static'] + +html_theme_options = { + "logo": { + "text": "BIDS Validator", + "image_light": "_static/BIDS_black.svg", + "image_dark": "_static/BIDS_white.svg", + } +} + +# -- Customization +# js_language = 'typescript' +# js_source_path = '../src/**/*.ts' +# primary_domain = 'js' + +myst_enable_extensions = [ + "attrs_inline", +] diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..204fd16b --- /dev/null +++ b/docs/index.md @@ -0,0 +1,39 @@ +# The BIDS Validator + +The BIDS Validator is a web application, command-line utility, +and Javascript/Typescript library for assessing compliance with the +[Brain Imaging Data Structure][BIDS] standard. + +## Getting Started + +In most cases, +the simplest way to use the validator is to browse to the [BIDS Validator][] web page: + +![The web interface to the BIDS Validator with the "Select Dataset Files" button highlighted. +(Dark theme)](_static/web_entrypoint_dark.png){.only-dark width="50%" align=center} +![The web interface to the BIDS Validator with the "Select Dataset Files" button highlighted. +(Light theme)](_static/web_entrypoint_light.png){.only-light width="50%" align=center} + +The web validator runs in-browser, and does not transfer data to any remote server. + +In some contexts, such as when working on a remote server, +it may be easier to use the command-line. +The BIDS Validator can be run with the [Deno] runtime +(see [Deno - Installation][] for detailed installation instructions): + +```shell +deno run -A jsr:@bids/validator +``` + +```{toctree} +:maxdepth: 2 +:caption: Contents: + +API Reference +``` + + +[BIDS]: https://bids.neuroimaging.io +[BIDS Validator]: https://bids-standard.github.io/bids-validator/ +[Deno]: https://deno.com/ +[Deno - Installation]: https://docs.deno.com/runtime/getting_started/installation/ diff --git a/docs/index.rst b/docs/index.rst deleted file mode 100644 index 37ad64c6..00000000 --- a/docs/index.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. BIDS Validator documentation master file, created by - sphinx-quickstart on Mon Nov 4 17:03:20 2024. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -BIDS Validator documentation -============================ - -Add your content using ``reStructuredText`` syntax. See the -`reStructuredText `_ -documentation for details. - - -.. toctree:: - :maxdepth: 2 - :caption: Contents: - diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 00000000..8983ee57 --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,4 @@ +sphinx +myst_parser +pydata-sphinx-theme +sphinx-copybutton From b884444d93ecc849e6a898dc111599697f5890fb Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Wed, 6 Nov 2024 21:19:13 -0500 Subject: [PATCH 06/12] Switch to sphinx-book-theme --- docs/_static/BIDS_black.svg | 92 -------------------------------- docs/_static/BIDS_logo_black.svg | 1 + docs/_static/BIDS_logo_white.svg | 1 + docs/_static/BIDS_white.svg | 92 -------------------------------- docs/conf.py | 8 +-- docs/requirements.txt | 2 +- 6 files changed, 7 insertions(+), 189 deletions(-) delete mode 100644 docs/_static/BIDS_black.svg create mode 100644 docs/_static/BIDS_logo_black.svg create mode 100644 docs/_static/BIDS_logo_white.svg delete mode 100644 docs/_static/BIDS_white.svg diff --git a/docs/_static/BIDS_black.svg b/docs/_static/BIDS_black.svg deleted file mode 100644 index 145f1f4e..00000000 --- a/docs/_static/BIDS_black.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - Ресурс 2 - - - - - - - - - - - - - - - Ресурс 2 - - - - diff --git a/docs/_static/BIDS_logo_black.svg b/docs/_static/BIDS_logo_black.svg new file mode 100644 index 00000000..9f1718f7 --- /dev/null +++ b/docs/_static/BIDS_logo_black.svg @@ -0,0 +1 @@ +Ресурс 2 diff --git a/docs/_static/BIDS_logo_white.svg b/docs/_static/BIDS_logo_white.svg new file mode 100644 index 00000000..629a5392 --- /dev/null +++ b/docs/_static/BIDS_logo_white.svg @@ -0,0 +1 @@ +Ресурс 1 diff --git a/docs/_static/BIDS_white.svg b/docs/_static/BIDS_white.svg deleted file mode 100644 index 763bf177..00000000 --- a/docs/_static/BIDS_white.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - Ресурс 1 - - - - - - - - - - - - - - - Ресурс 1 - - - - diff --git a/docs/conf.py b/docs/conf.py index 110c27f3..23122bb8 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -27,14 +27,14 @@ # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output -html_theme = 'pydata_sphinx_theme' +html_theme = 'sphinx_book_theme' html_static_path = ['_static'] html_theme_options = { "logo": { - "text": "BIDS Validator", - "image_light": "_static/BIDS_black.svg", - "image_dark": "_static/BIDS_white.svg", + "text": "The BIDS Validator", + "image_light": "_static/BIDS_logo_black.svg", + "image_dark": "_static/BIDS_logo_white.svg", } } diff --git a/docs/requirements.txt b/docs/requirements.txt index 8983ee57..7bf77698 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,4 +1,4 @@ sphinx myst_parser -pydata-sphinx-theme +sphinx-book-theme sphinx-copybutton From e28cada552ad7101ec8656f4347e247010830b66 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Wed, 6 Nov 2024 21:21:13 -0500 Subject: [PATCH 07/12] Flesh out TOC --- README.md | 31 ++++++++++++++++++++++--------- docs/dev/contributing.md | 1 + docs/dev/environment.md | 1 + docs/dev/using-the-api.md | 1 + docs/index.md | 25 +++++++++++++++++++++---- docs/user_guide/command-line.md | 1 + docs/user_guide/issues.md | 1 + docs/user_guide/web.md | 1 + 8 files changed, 49 insertions(+), 13 deletions(-) create mode 120000 docs/dev/contributing.md create mode 100644 docs/dev/environment.md create mode 100644 docs/dev/using-the-api.md create mode 100644 docs/user_guide/command-line.md create mode 100644 docs/user_guide/issues.md create mode 100644 docs/user_guide/web.md diff --git a/README.md b/README.md index 8a786bd6..52431ff3 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,33 @@ -# Deno based bids-validator +# The BIDS Validator -## Intro +The BIDS Validator is a web application, command-line utility, +and Javascript/Typescript library for assessing compliance with the +[Brain Imaging Data Structure][BIDS] standard. -This is a full rewrite of the bids-validator JavaScript implementation designed to use the [bids-specification schema](https://github.com/bids-standard/bids-specification/tree/master/src/schema) to apply the majority of validation rules. +## Getting Started -Deno is a JavaScript and TypeScript runtime that is used to run the schema based validator. Deno is simpler than Node.js and only requires one tool to use, the Deno executable itself. To install Deno, follow these [install instructions for your platform](https://deno.land/manual/getting_started/installation). +In most cases, +the simplest way to use the validator is to browse to the [BIDS Validator][] web page: -## Usage +![The web interface to the BIDS Validator with the "Select Dataset Files" button highlighted. +(Dark theme)](_static/web_entrypoint_dark.png){.only-dark width="50%" align=center} +![The web interface to the BIDS Validator with the "Select Dataset Files" button highlighted. +(Light theme)](_static/web_entrypoint_light.png){.only-light width="50%" align=center} -To use the latest validator hosted at https://deno.land/x/bids_validator, use the following command: +The web validator runs in-browser, and does not transfer data to any remote server. -```console -$ deno run --allow-read --allow-env https://deno.land/x/bids_validator/bids-validator.ts path/to/dataset +In some contexts, such as when working on a remote server, +it may be easier to use the command-line. +The BIDS Validator can be run with the [Deno] runtime +(see [Deno - Installation][] for detailed installation instructions): + +```shell +deno run -ERN jsr:@bids/validator ``` -Deno by default sandboxes applications like a web browser. `--allow-read` allows the validator to read local files, and `--allow-env` enables OS-specific features. +Deno by default sandboxes applications like a web browser. +`-E`, `-R` and `-N` allow the validator to read environment variables, +local files, and network locations. ### Configuration file diff --git a/docs/dev/contributing.md b/docs/dev/contributing.md new file mode 120000 index 00000000..95181235 --- /dev/null +++ b/docs/dev/contributing.md @@ -0,0 +1 @@ +../../.github/CONTRIBUTING.md \ No newline at end of file diff --git a/docs/dev/environment.md b/docs/dev/environment.md new file mode 100644 index 00000000..dc310f22 --- /dev/null +++ b/docs/dev/environment.md @@ -0,0 +1 @@ +# Development environment diff --git a/docs/dev/using-the-api.md b/docs/dev/using-the-api.md new file mode 100644 index 00000000..3017721d --- /dev/null +++ b/docs/dev/using-the-api.md @@ -0,0 +1 @@ +# Using the API diff --git a/docs/index.md b/docs/index.md index 204fd16b..6055c5d5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -17,7 +17,7 @@ the simplest way to use the validator is to browse to the [BIDS Validator][] web The web validator runs in-browser, and does not transfer data to any remote server. In some contexts, such as when working on a remote server, -it may be easier to use the command-line. +it may be easier to use the command-line. The BIDS Validator can be run with the [Deno] runtime (see [Deno - Installation][] for detailed installation instructions): @@ -26,12 +26,29 @@ deno run -A jsr:@bids/validator ``` ```{toctree} -:maxdepth: 2 -:caption: Contents: +:hidden: +:caption: User guide -API Reference +user_guide/web.md +user_guide/command-line.md +user_guide/issues.md +``` + +```{toctree} +:hidden: +:caption: Developer guide + +dev/using-the-api.md +dev/contributing.md +dev/environment.md ``` +```{toctree} +:hidden: +:caption: Reference + +API Reference +``` [BIDS]: https://bids.neuroimaging.io [BIDS Validator]: https://bids-standard.github.io/bids-validator/ diff --git a/docs/user_guide/command-line.md b/docs/user_guide/command-line.md new file mode 100644 index 00000000..6d9e7b62 --- /dev/null +++ b/docs/user_guide/command-line.md @@ -0,0 +1 @@ +# Using the command line diff --git a/docs/user_guide/issues.md b/docs/user_guide/issues.md new file mode 100644 index 00000000..31189e1f --- /dev/null +++ b/docs/user_guide/issues.md @@ -0,0 +1 @@ +# Understanding issues diff --git a/docs/user_guide/web.md b/docs/user_guide/web.md new file mode 100644 index 00000000..617f51e6 --- /dev/null +++ b/docs/user_guide/web.md @@ -0,0 +1 @@ +# Using the web validator From 6b17f6a0ab7773ad3a6257198d886af28471cfd6 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Thu, 7 Nov 2024 09:20:07 -0500 Subject: [PATCH 08/12] DOC: Bring README up to date with current repo --- README.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 52431ff3..f2c18e2b 100644 --- a/README.md +++ b/README.md @@ -51,13 +51,13 @@ Pass the `--json` flag to see the issues in detail. ### Development tools -From the repository root, use `bids-validator/bids-validator-deno` to run with all permissions enabled by default: +From the repository root, use `./local-run` to run with all permissions enabled by default: ```shell # Run from within the /bids-validator directory cd bids-validator # Run validator: -./bids-validator-deno path/to/dataset +./local-run path/to/dataset ``` ## Schema validator test suite @@ -69,12 +69,6 @@ deno test --allow-env --allow-read --allow-write src/ This test suite includes running expected output from bids-examples and may throw some expected failures for bids-examples datasets where either the schema or validator are misaligned with the example dataset while under development. -## Refreshing latest specification - -If you are validating with the latest specification instead of a specific version, the validator will hold onto a cached version. You can request the newest version by adding the `--reload` argument to obtain the newest specification definition. - -`deno run --reload=https://bids-specification.readthedocs.io/en/latest/schema.json src/main.ts` - ## Modifying and building a new schema To modify the schema a clone of bids-standard/bids-specification will need to be made. README and schema itself live here https://github.com/bids-standard/bids-specification/tree/master/src/schema. From 477e717c2d1f361471e8c38e39a0927a0db04ee6 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Thu, 7 Nov 2024 09:20:29 -0500 Subject: [PATCH 09/12] Add CLI usage docs --- docs/conf.py | 2 + docs/requirements.txt | 1 + docs/user_guide/command-line.md | 96 +++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+) diff --git a/docs/conf.py b/docs/conf.py index 23122bb8..710b11c1 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -17,6 +17,7 @@ # 'sphinx_js', 'myst_parser', 'sphinx_copybutton', + 'sphinx_design', ] templates_path = ['_templates'] @@ -45,4 +46,5 @@ myst_enable_extensions = [ "attrs_inline", + "colon_fence", ] diff --git a/docs/requirements.txt b/docs/requirements.txt index 7bf77698..d906c34c 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -2,3 +2,4 @@ sphinx myst_parser sphinx-book-theme sphinx-copybutton +sphinx-design diff --git a/docs/user_guide/command-line.md b/docs/user_guide/command-line.md index 6d9e7b62..f57eb049 100644 --- a/docs/user_guide/command-line.md +++ b/docs/user_guide/command-line.md @@ -1 +1,97 @@ # Using the command line + +The BIDS Validator may be run with the [Deno] runtime. +For detailed installation instructions, see [Deno - Installation][]. +Deno is also available as a [conda-forge package](https://anaconda.org/conda-forge/deno). + +## Installation + +In general, there is no need to install Deno applications. +`deno run` allows running from the Javascript Repository: + +```sh +deno run -ERN jsr:@bids/validator +``` + +However, you can also install a lightweight script (into `$HOME/.deno/bin`): + +```sh +deno install -ERN -g -n bids-validator jsr:@bids/validator +``` + +Or compile a bundled binary: + +```sh +deno compile -ERN -o bids-validator jsr:@bids/validator +``` + +## Usage + +The BIDS Validator takes a single dataset as input: + +::::{tab-set} +:sync-group: run-method + +:::{tab-item} Deno run +:sync: run + +```sh +deno run -ERN jsr:@bids/validator +``` + +::: +:::{tab-item} Installed +:sync: install + +```sh +bids-validator +``` + +::: +:::: + +### Options + +| Option | Description | +| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-v`, `--verbose` | Log more extensive information about issues | +| `-s URL`, `--schema URL` | Specify an alternative [BIDS Schema] for validation | +| `-c FILE`, `--config FILE` | Provide a [configuration file](#configuration-file) | +| `-r`, `--recursive` | Validate datasets found in `derivatives/` subdirectories, recursively | +| `-o FILE`, `--outfile FILE` | Write validation results to file. | +| `--json` | Output results in machine-readable [JSON] | +| `--ignoreWarnings` | Do not report warnings | +| `--ignoreNiftiHeaders` | Do not open NIfTI files, skipping any checks that rely on NIfTI header data | +| `--filenameMode` | Perform filename checks only on newline-separated filenames read from [stdin] | +| `--blacklistModalities MOD...` | Raise error if passed modalities are detected in the dataset. Modalities may be any of `mri`, `eeg`, `ieeg`, `meg`, `beh`, `pet`, `micr`, `motion`, `nirs`, or `mrs`. | +| `--debug LEVEL` | Enable logging at the specified level. Default level is `ERROR`. Levels include (from most to least verbose): `NOTSET`, `DEBUG`, `INFO`, WARN`, `ERROR`, `CRITICAL`. | +| `--color`, `--no-color` | Enable/disable color. The validator also respects the [NO_COLOR] and [FORCE_COLOR] environment variables. | + +## Configuration file + +The schema validator accepts a JSON configuration file that reclassifies issues as +warnings, errors or ignored. + +```json +{ + "ignore": [ + { "code": "JSON_KEY_RECOMMENDED", "location": "/T1w.json" } + ], + "warning": [], + "error": [ + { "code": "NO_AUTHORS" } + ] +} +``` + +The issues are partial matches of the [Issues] that the validator accumulates. +Pass the `--json` flag to see the issues in detail. + +[Deno]: https://deno.com/ +[Deno - Installation]: https://docs.deno.com/runtime/getting_started/installation/ +[JSON]: https://www.json.org/json-en.html +[BIDS Schema]: https://bidsschematools.readthedocs.io +[stdin]: https://en.wikipedia.org/wiki/Standard_streams +[NO_COLOR]: https://no-color.org +[FORCE_COLOR]: https://force-color.org +[Issues]: https://jsr.io/@bids/validator/doc/issues/~/Issue From 2c3eece001e4be49fff9b04803da55bb7ce18310 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Thu, 7 Nov 2024 09:24:57 -0500 Subject: [PATCH 10/12] Ignore _build directory --- docs/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/.gitignore diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000..69fa449d --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +_build/ From 41dc1fbc1970e9ce930c5d8df2793fcd4906ead4 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Thu, 7 Nov 2024 09:29:27 -0500 Subject: [PATCH 11/12] Add .readthedocs.yaml --- .readthedocs.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .readthedocs.yaml diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 00000000..07909054 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,13 @@ +version: 2 + +build: + os: ubuntu-lts-latest + tools: + python: latest + +python: + install: + requirements: docs/requirements.txt + +sphinx: + configuration: docs/conf.py From af9a793274cb2bb08a7d0df49212e078e0b5f963 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Thu, 7 Nov 2024 09:34:23 -0500 Subject: [PATCH 12/12] Fix RTD --- .readthedocs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 07909054..1e096e6a 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -7,7 +7,7 @@ build: python: install: - requirements: docs/requirements.txt + - requirements: docs/requirements.txt sphinx: configuration: docs/conf.py