From 95fec726cdc4fe686d84711b4c1ef3c5816ad30c Mon Sep 17 00:00:00 2001 From: natam1 <72096633+natam1@users.noreply.github.com> Date: Tue, 11 Jun 2024 14:45:11 -0700 Subject: [PATCH] Initial commit --- .devcontainer/Dockerfile | 29 +++++ .devcontainer/devcontainer.json | 21 +++ .dockerignore | 3 + .github/workflows/lint.yml | 17 +++ .github/workflows/mkdocs.yml | 20 +++ .github/workflows/setup.yml | 35 +++++ .markdownlint.yaml | 12 ++ .pre-commit-config.yaml | 15 +++ .vscode/settings.json | 9 ++ .vscode/tasks.json | 16 +++ LICENSE | 201 +++++++++++++++++++++++++++++ README.md | 12 ++ docs/.pages | 4 + docs/README.md | 78 +++++++++++ docs/img/new-repo-all-branches.png | Bin 0 -> 5564 bytes docs/img/new-repo-init.png | Bin 0 -> 34277 bytes docs/img/new-repo-visibility.png | Bin 0 -> 9172 bytes docs/requirements.txt | 5 + docs/running-locally.md | 41 ++++++ mkdocs.yml | 59 +++++++++ mlc_config.json | 9 ++ 21 files changed, 586 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json create mode 100644 .dockerignore create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/mkdocs.yml create mode 100644 .github/workflows/setup.yml create mode 100644 .markdownlint.yaml create mode 100644 .pre-commit-config.yaml create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 LICENSE create mode 100644 README.md create mode 100644 docs/.pages create mode 100644 docs/README.md create mode 100644 docs/img/new-repo-all-branches.png create mode 100644 docs/img/new-repo-init.png create mode 100644 docs/img/new-repo-visibility.png create mode 100644 docs/requirements.txt create mode 100644 docs/running-locally.md create mode 100644 mkdocs.yml create mode 100644 mlc_config.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..6f02565 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,29 @@ +FROM python:3.11 + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + USER=calitp + +RUN useradd --create-home --shell /bin/bash $USER && \ + chown -R $USER /home/$USER + +USER $USER +ENV PATH "$PATH:/home/$USER/.local/bin" +WORKDIR /app/mkdocs + +EXPOSE 8000 + +RUN python -m pip install --upgrade pip + +COPY . . + +RUN pip install -r docs/requirements.txt +RUN pip install pre-commit + +# install pre-commit environments in throwaway Git repository +# https://stackoverflow.com/a/68758943 +RUN git init . && \ + pre-commit install-hooks && \ + rm -rf .git + +CMD ["sleep", "infinity"] diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..5522bd7 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,21 @@ +// For format details, see https://aka.ms/devcontainer.json. +{ + "name": "cal-itp/mkdocs-template", + "build": { + "dockerfile": "Dockerfile", + "context": ".." + }, + "customizations": { + "vscode": { + "extensions": [ + "bpruitt-goddard.mermaid-markdown-syntax-highlighting", + "eamodio.gitlens", + "esbenp.prettier-vscode", + "mhutchie.git-graph" + ] + } + }, + "forwardPorts": [8000], + "workspaceFolder": "/app/mkdocs", + "workspaceMount": "source=${localWorkspaceFolder},target=/app/mkdocs,type=bind" +} diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..7d1fe79 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.devcontainer/ +.git/ +.github/ diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..3a18c05 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,17 @@ +name: Lint and style checks + +on: + workflow_dispatch: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + - uses: pre-commit/action@v2.0.0 + - uses: gaurav-nelson/github-action-markdown-link-check@v1 diff --git a/.github/workflows/mkdocs.yml b/.github/workflows/mkdocs.yml new file mode 100644 index 0000000..1e986e1 --- /dev/null +++ b/.github/workflows/mkdocs.yml @@ -0,0 +1,20 @@ +name: Publish docs +on: + workflow_dispatch: + push: + branches: + - main + +jobs: + mkdocs: + name: Publish docs + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Deploy docs + uses: mhausenblas/mkdocs-deploy-gh-pages@master + env: + REQUIREMENTS: docs/requirements.txt + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml new file mode 100644 index 0000000..af9645a --- /dev/null +++ b/.github/workflows/setup.yml @@ -0,0 +1,35 @@ +name: New repo setup + +on: + workflow_dispatch: + push: + branches: + - main + +jobs: + precheck: + name: Pre-check + runs-on: ubuntu-latest +# if: ${{ github.repository != 'cal-itp/mkdocs-template' }} + if: always() + steps: + - name: Pre-check + run: echo "Running pre-check" + outputs: + setup_done: ${{ secrets.SETUP_DONE }} + + setup: + name: Setup + runs-on: ubuntu-latest + needs: precheck + if: ${{ !needs.precheck.outputs.setup_done }} + steps: + - name: Create repository secret + uses: gliech/create-github-secret-action@v1 + with: + name: SETUP_DONE + value: true + pa_token: ${{ secrets.PAT_REPO_SECRETS_WRITE }} + + - name: Debug message + run: echo "Running the repository setup" diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000..cab082d --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,12 @@ +# includes/excludes all rules by default +default: true + +# 4-space list indentation works best with MkDocs +MD007: + indent: 4 + +# Remove line length limit - no one wants to hard wrap all their paragraphs +MD013: false + +# Allow inline HTML +MD033: false diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..5955d0d --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,15 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.5.0 + hooks: + - id: check-added-large-files + - id: end-of-file-fixer + - id: mixed-line-ending + - id: requirements-txt-fixer + - id: trailing-whitespace + args: [--markdown-linebreak-ext=md] + + - repo: https://github.com/igorshubovych/markdownlint-cli + rev: v0.37.0 + hooks: + - id: markdownlint diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..14e5119 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, + "files.encoding": "utf8", + "files.eol": "\n", + "files.insertFinalNewline": true, + "files.trimFinalNewlines": true, + "files.trimTrailingWhitespace": true +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..55104e9 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,16 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "mkdocs serve", + "type": "shell", + "command": "mkdocs serve --dev-addr=0.0.0.0:8000", + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..f994297 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# mkdocs-template + +This is a template repository to enable rapid creation of documentation sites built using `mkdocs` and served via GitHub Pages +under Cal-ITP's `docs.calitp.org` domain. + +Read more about how to use this template: . + +Create a new docs site from this template: . + +## License + +This code in this repository is licensed under [Apache 2.0](./LICENSE). diff --git a/docs/.pages b/docs/.pages new file mode 100644 index 0000000..ca70080 --- /dev/null +++ b/docs/.pages @@ -0,0 +1,4 @@ +nav: + - Getting started: README.md + - Running locally: running-locally.md + - New site from template: https://github.com/cal-itp/mkdocs-template/generate diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..3f705e7 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,78 @@ +# Getting started + +This is a template repository to enable rapid creation of documentation sites built using [`mkdocs`][mkdocs] and served via +GitHub Pages under Cal-ITP's `docs.calitp.org` domain. + +## Create new site from template + +Follow these steps to create a new repository that uses this repository as a template. Content from the new repository will be +published online at `https://docs.calitp.org/repo-name`. + +Adapted from [GitHub's documentation][gh-template-repo-howto]. + +1. Head to the _generate repository_ page for this template: + + +1. Configure the new repository's details, including the **Owner** (`cal-itp`), **Name**, and **Description** + ![Screenshot showing creating a new repository from mkdocs-template](img/new-repo-init.png) + +1. Ensure the new repository's visiblity is set to **Public** + ![Screenshot showing the new repository's visibility set to Public](img/new-repo-visibility.png) + +1. Ensure the checkbox to **Include all branches** is checked + ![Screenshot showing the Include all branches checkbox checked](img/new-repo-all-branches.png) + +1. Click **Create repository from template** to finish and create the new repository + +## Finalize the new site + +Once the above steps are complete and the new repository is ready, it's a good idea to clean up the remnants of the template. + +This includes: + +- **Review** the `LICENSE` file and ensure it is appropriate for your new project. If not, update it with a more appropriate + license before continuing. +- **Find+Replace** instances of `mkdocs-template` with the name of your new repository. +- **Edit** the `docs/.pages` file to update your site's navigation menu, or delete the file to generate a navigation menu for the + site automatically. Read more about the + [`mkdocs-awesome-pages-plugin`](https://github.com/lukasgeiter/mkdocs-awesome-pages-plugin/#customize-navigation). + +## How does this work? + +### `mkdocs` + +[`mkdocs`][mkdocs] turns markdown content inside the `docs/` directory into HTML+CSS+JS needed for a website. + +The [`mkdocs.yml`](https://github.com/cal-itp/mkdocs-template/blob/main/mkdocs.yml) file in the root of the repository +configures website settings and available plugins for this build process. + +The [`docs/requirements.txt`](https://github.com/cal-itp/mkdocs-template/blob/main/docs/requirements.txt) file lists the +python dependencies necessary to build the documentation using `mkdocs`. + +### GitHub Actions + +A [GitHub Action][gh-actions] called [`mhausenblas/mkdocs-deploy-gh-pages`][mkdocs-deploy-gh-pages] enables automated +building of new documentation content using `mkdocs`, whenever the content changes. Our workflow is defined in the +[`.github/workflows/mkdocs.yml`](https://github.com/cal-itp/mkdocs-template/blob/main/.github/workflows/mkdocs.yml) file. + +The action uses the `docs/requirements.txt` file to install the necessary dependencies for building the docs site. + +After running `mkdocs`, the action redeploys the documentation site by force-pushing to the `gh-pages` branch. + +### GitHub Pages + +[GitHub Pages][gh-pages] serves the website from the `gh-pages` branch of this repository. + +Cal-ITP has an Organization site repository at . This repository contains the +root website and is served (via a [`CNAME`](https://github.com/cal-itp/cal-itp.github.io/blob/main/CNAME)) from +. + +GitHub Pages for Organizations functions such that any repository created in the [Cal-ITP Organization][cal-itp-org], with +GitHub Pages enabled, will have an automatic domain at `https://docs.calitp.org/repository-name`. + +[cal-itp-org]: https://github.com/cal-itp +[gh-actions]: https://github.com/features/actions +[gh-pages]: https://pages.github.com/ +[gh-template-repo-howto]: https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/creating-a-repository-from-a-template#creating-a-repository-from-a-template +[mkdocs]: https://www.mkdocs.org/ +[mkdocs-deploy-gh-pages]: https://github.com/mhausenblas/mkdocs-deploy-gh-pages diff --git a/docs/img/new-repo-all-branches.png b/docs/img/new-repo-all-branches.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc127c05a465269bba38df96af483b3cf79512b GIT binary patch literal 5564 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 arY-Ba+%BQ+GpeO31#k8j4BP+xrTiDkBhqyM literal 0 HcmV?d00001 diff --git a/docs/img/new-repo-init.png b/docs/img/new-repo-init.png new file mode 100644 index 0000000000000000000000000000000000000000..e8e730e7a6dbccd25e29dd597883b25bf73f3cca GIT binary patch literal 34277 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%0D(qxok3RpOc>cB_@9`*qj>7H7_|dzXCvRvj(+ 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 Mmf4^D|MSQH0L6. + +## VS Code Devcontainer + +This repository comes with a [VS Code Devcontainers](https://code.visualstudio.com/docs/remote/containers) configuration. + +Once you clone the repository locally, simply open it within VS Code, which will +prompt you to re-open the repository within the Devcontainer. + +Once the Devcontainer is running, bring up the Command Palette and enter: + +```console +> Tasks: Run Build Task +``` + +To build the site and launch a local server. The site is running on at a randomly assigned port; see the +VS Code `Ports` tab for information. diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..ddec712 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,59 @@ +site_name: "cal-itp/mkdocs-template" +site_url: https://docs.calitp.org/mkdocs-template +repo_url: https://github.com/cal-itp/mkdocs-template +edit_uri: edit/main/docs + +theme: + name: material + features: + - navigation.tabs + palette: + - media: "(prefers-color-scheme: light)" + scheme: default + primary: blue + accent: amber + toggle: + icon: material/toggle-switch-off-outline + name: Switch to dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + primary: blue + accent: amber + toggle: + icon: material/toggle-switch + name: Switch to light mode + +extra: + analytics: + provider: google + property: G-SZB618VNBZ + +plugins: + - search + - awesome-pages + +extra_javascript: + - https://unpkg.com/mermaid@8.5.0/dist/mermaid.min.js + +extra_css: + - https://use.fontawesome.com/releases/v5.13.0/css/all.css + +markdown_extensions: + - admonition + - codehilite: + linenums: true + - pymdownx.inlinehilite + - pymdownx.tasklist: + custom_checkbox: true + - pymdownx.tabbed + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_div_format + - pymdownx.smartsymbols + - meta + - toc: + # insert a blank space before the character + permalink: " ΒΆ" + - smarty diff --git a/mlc_config.json b/mlc_config.json new file mode 100644 index 0000000..7d3d9a0 --- /dev/null +++ b/mlc_config.json @@ -0,0 +1,9 @@ +// config file for markdown-link-check +// see: https://github.com/tcort/markdown-link-check +{ + "ignorePatterns": [ + { + "pattern": "localhost" + } + ] +}