diff options
| -rw-r--r-- | .github/workflows/docs.yml | 43 | ||||
| -rw-r--r-- | .travis.yml | 5 | ||||
| -rw-r--r-- | docs/cli_commands.md | 10 | ||||
| -rw-r--r-- | lib/python/qmk/cli/generate/__init__.py | 1 | ||||
| -rw-r--r-- | lib/python/qmk/cli/generate/docs.py | 37 | ||||
| -rwxr-xr-x | util/travis_docs.sh | 15 |
6 files changed, 91 insertions, 20 deletions
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 000000000..8855d1107 --- /dev/null +++ b/.github/workflows/docs.yml | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | name: Generate Docs | ||
| 2 | |||
| 3 | on: | ||
| 4 | push: | ||
| 5 | branches: | ||
| 6 | - master | ||
| 7 | paths: | ||
| 8 | - 'tmk_core/**' | ||
| 9 | - 'quantum/**' | ||
| 10 | - 'platforms/**' | ||
| 11 | - 'docs/**' | ||
| 12 | - '.github/workflows/docs.yml' | ||
| 13 | |||
| 14 | jobs: | ||
| 15 | generate: | ||
| 16 | runs-on: ubuntu-latest | ||
| 17 | container: qmkfm/base_container | ||
| 18 | |||
| 19 | # protect against those who develop with their fork on master | ||
| 20 | if: github.repository == 'qmk/qmk_firmware' | ||
| 21 | |||
| 22 | steps: | ||
| 23 | - uses: actions/checkout@v2 | ||
| 24 | with: | ||
| 25 | fetch-depth: 1 | ||
| 26 | |||
| 27 | - name: Install dependencies | ||
| 28 | run: | | ||
| 29 | apt-get update && apt-get install -y rsync nodejs npm doxygen | ||
| 30 | npm install -g moxygen | ||
| 31 | |||
| 32 | - name: Build docs | ||
| 33 | run: | | ||
| 34 | qmk --verbose generate-docs | ||
| 35 | |||
| 36 | - name: Deploy | ||
| 37 | uses: JamesIves/github-pages-deploy-action@3.7.1 | ||
| 38 | with: | ||
| 39 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| 40 | BASE_BRANCH: master | ||
| 41 | BRANCH: gh-pages | ||
| 42 | FOLDER: .build/docs | ||
| 43 | GIT_CONFIG_EMAIL: hello@qmk.fm | ||
diff --git a/.travis.yml b/.travis.yml index f2e8a8411..a6533d613 100644 --- a/.travis.yml +++ b/.travis.yml | |||
| @@ -18,21 +18,16 @@ addons: | |||
| 18 | - ubuntu-toolchain-r-test | 18 | - ubuntu-toolchain-r-test |
| 19 | - llvm-toolchain-trusty-7 | 19 | - llvm-toolchain-trusty-7 |
| 20 | packages: | 20 | packages: |
| 21 | - pandoc | ||
| 22 | - diffutils | 21 | - diffutils |
| 23 | - dos2unix | 22 | - dos2unix |
| 24 | - doxygen | ||
| 25 | - clang-format-7 | 23 | - clang-format-7 |
| 26 | - libstdc++-7-dev | 24 | - libstdc++-7-dev |
| 27 | install: | ||
| 28 | - npm install -g moxygen | ||
| 29 | script: | 25 | script: |
| 30 | - git fetch --depth=50 origin $TRAVIS_BRANCH:$TRAVIS_BRANCH | 26 | - git fetch --depth=50 origin $TRAVIS_BRANCH:$TRAVIS_BRANCH |
| 31 | - git rev-parse --short HEAD | 27 | - git rev-parse --short HEAD |
| 32 | - git diff --name-only HEAD $TRAVIS_BRANCH | 28 | - git diff --name-only HEAD $TRAVIS_BRANCH |
| 33 | - bash util/travis_test.sh | 29 | - bash util/travis_test.sh |
| 34 | - bash util/travis_build.sh | 30 | - bash util/travis_build.sh |
| 35 | - bash util/travis_docs.sh | ||
| 36 | after_script: | 31 | after_script: |
| 37 | bash util/travis_compiled_push.sh | 32 | bash util/travis_compiled_push.sh |
| 38 | notifications: | 33 | notifications: |
diff --git a/docs/cli_commands.md b/docs/cli_commands.md index b10f5d499..69df82f95 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md | |||
| @@ -286,6 +286,16 @@ This command starts a local HTTP server which you can use for browsing or improv | |||
| 286 | qmk docs [-p PORT] | 286 | qmk docs [-p PORT] |
| 287 | ``` | 287 | ``` |
| 288 | 288 | ||
| 289 | ## `qmk generate-docs` | ||
| 290 | |||
| 291 | This command allows you to generate QMK documentation locally. It can be uses for general browsing or improving the docs. External tools such as [serve](https://www.npmjs.com/package/serve) can be used to browse the generated files. | ||
| 292 | |||
| 293 | **Usage**: | ||
| 294 | |||
| 295 | ``` | ||
| 296 | qmk generate-docs | ||
| 297 | ``` | ||
| 298 | |||
| 289 | ## `qmk kle2json` | 299 | ## `qmk kle2json` |
| 290 | 300 | ||
| 291 | This command allows you to convert from raw KLE data to QMK Configurator JSON. It accepts either an absolute file path, or a file name in the current directory. By default it will not overwrite `info.json` if it is already present. Use the `-f` or `--force` flag to overwrite. | 301 | This command allows you to convert from raw KLE data to QMK Configurator JSON. It accepts either an absolute file path, or a file name in the current directory. By default it will not overwrite `info.json` if it is already present. Use the `-f` or `--force` flag to overwrite. |
diff --git a/lib/python/qmk/cli/generate/__init__.py b/lib/python/qmk/cli/generate/__init__.py index 4dc7607ef..13bd1f091 100644 --- a/lib/python/qmk/cli/generate/__init__.py +++ b/lib/python/qmk/cli/generate/__init__.py | |||
| @@ -1 +1,2 @@ | |||
| 1 | from . import api | 1 | from . import api |
| 2 | from . import docs | ||
diff --git a/lib/python/qmk/cli/generate/docs.py b/lib/python/qmk/cli/generate/docs.py new file mode 100644 index 000000000..a59a24db5 --- /dev/null +++ b/lib/python/qmk/cli/generate/docs.py | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | """Build QMK documentation locally | ||
| 2 | """ | ||
| 3 | import shutil | ||
| 4 | import subprocess | ||
| 5 | from pathlib import Path | ||
| 6 | |||
| 7 | from milc import cli | ||
| 8 | |||
| 9 | DOCS_PATH = Path('docs/') | ||
| 10 | BUILD_PATH = Path('.build/docs/') | ||
| 11 | |||
| 12 | |||
| 13 | @cli.subcommand('Build QMK documentation.', hidden=False if cli.config.user.developer else True) | ||
| 14 | def generate_docs(cli): | ||
| 15 | """Invoke the docs generation process | ||
| 16 | |||
| 17 | TODO(unclaimed): | ||
| 18 | * [ ] Add a real build step... something static docs | ||
| 19 | """ | ||
| 20 | |||
| 21 | if BUILD_PATH.exists(): | ||
| 22 | shutil.rmtree(BUILD_PATH) | ||
| 23 | |||
| 24 | shutil.copytree(DOCS_PATH, BUILD_PATH) | ||
| 25 | |||
| 26 | # When not verbose we want to hide all output | ||
| 27 | args = {'check': True} | ||
| 28 | if not cli.args.verbose: | ||
| 29 | args.update({'stdout': subprocess.DEVNULL, 'stderr': subprocess.STDOUT}) | ||
| 30 | |||
| 31 | cli.log.info('Generating internal docs...') | ||
| 32 | |||
| 33 | # Generate internal docs | ||
| 34 | subprocess.run(['doxygen', 'Doxyfile'], **args) | ||
| 35 | subprocess.run(['moxygen', '-q', '-a', '-g', '-o', BUILD_PATH / 'internals_%s.md', 'doxygen/xml'], **args) | ||
| 36 | |||
| 37 | cli.log.info('Successfully generated internal docs to %s.', BUILD_PATH) | ||
diff --git a/util/travis_docs.sh b/util/travis_docs.sh deleted file mode 100755 index 93c2d7186..000000000 --- a/util/travis_docs.sh +++ /dev/null | |||
| @@ -1,15 +0,0 @@ | |||
| 1 | #!/bin/bash | ||
| 2 | |||
| 3 | source util/travis_utils.sh | ||
| 4 | source util/travis_push.sh | ||
| 5 | |||
| 6 | if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip docs]"* ]] ; then | ||
| 7 | if git diff --name-only ${TRAVIS_COMMIT_RANGE} | grep -e '^quantum/' -e '^tmk_core/' -e '^docs/internals_.*'; then | ||
| 8 | echo "Generating internal docs..." | ||
| 9 | rm -rf doxygen | ||
| 10 | doxygen Doxyfile | ||
| 11 | moxygen -q -a -g -o docs/internals_%s.md doxygen/xml | ||
| 12 | git add docs/internals_* | ||
| 13 | git commit -m'autogenerated internal docs for ${TRAVIS_COMMIT_RANGE}' || true | ||
| 14 | fi | ||
| 15 | fi | ||
