From 38e74faf554c6f54812d2abd779c63661c2e32a4 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Tue, 2 Jun 2020 12:32:09 +0300 Subject: [PATCH] Add vnu-jar for HTML validation. Also, add a GitHub Action which builds the docs and run the validator script. --- .github/workflows/docs.yml | 73 ++++++++++++++++++++++++++++++++++++++ build/npm/vnu-jar.js | 55 ++++++++++++++++++++++++++++ package-lock.json | 6 ++++ package.json | 4 ++- 4 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/docs.yml create mode 100644 build/npm/vnu-jar.js diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 000000000..ab1ef3b83 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,73 @@ +name: Docs + +on: + push: + branches: + - master + pull_request: + branches: + - "**" + +env: + CI: true + NODE: 12.x + RUBY: 2.6.x + +jobs: + run: + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@v2 + + - name: Set up Node.js + uses: actions/setup-node@v1 + with: + node-version: "${{ env.NODE }}" + + - name: Set up Ruby + uses: actions/setup-ruby@v1 + with: + ruby-version: ${{ env.RUBY }} + + - name: Disable gem docs + run: 'echo "gem: --no-document" > ~/.gemrc' + + - name: Set up npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-v${{ env.node }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}} + restore-keys: | + ${{ runner.OS }}-node-v${{ env.node }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} + ${{ runner.OS }}-node-v${{ env.node }}- + + - name: Set up Ruby cache + uses: actions/cache@v2 + with: + path: vendor/bundle + key: ${{ runner.os }}-ruby-v${{ env.RUBY }}-${{ hashFiles('Gemfile') }}-${{ hashFiles('Gemfile.lock') }} + restore-keys: | + ${{ runner.os }}-ruby-v${{ env.RUBY }}-${{ hashFiles('Gemfile') }}-${{ hashFiles('Gemfile.lock') }} + ${{ runner.os }}-ruby-v${{ env.RUBY }}- + + - name: Set up Bundler + run: gem install bundler -v "~> 1.17" + + - run: ruby --version + - run: gem --version + - run: bundle --version + - run: java -version + + - name: Install npm dependencies + run: npm ci + + - name: Install bundler dependencies + run: bundle install --gemfile docs/Gemfile --deployment --jobs=4 --retry=3 --clean + + - name: Build docs + run: npm run docs-compile + + - name: Run HTML validator + run: npm run docs-lint diff --git a/build/npm/vnu-jar.js b/build/npm/vnu-jar.js new file mode 100644 index 000000000..8fa74ced5 --- /dev/null +++ b/build/npm/vnu-jar.js @@ -0,0 +1,55 @@ +#!/usr/bin/env node + +/*! + * Script to run vnu-jar if Java is available. + * Copyright 2017-2020 The Bootstrap Authors + * Copyright 2017-2020 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +'use strict' + +const childProcess = require('child_process') +const vnu = require('vnu-jar') + +childProcess.exec('java -version', (error, stdout, stderr) => { + if (error) { + console.error('Skipping vnu-jar test; Java is missing.') + return + } + + const is32bitJava = !/64-Bit/.test(stderr) + + // vnu-jar accepts multiple ignores joined with a `|`. + // Also note that the ignores are regular expressions. + const ignores = [ + // "autocomplete" is included in