From 25e796f2ac2fd374144b34838ac21544e85fd5e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Sat, 20 Jan 2018 12:51:15 -0800 Subject: [PATCH] Add a make target and Travis CI stage for linting docs Nobody wants borked markdown syntax in docs --- .travis.yml | 10 ++++ Makefile | 6 +- package-lock.json | 139 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 4 files changed, 155 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 70833d056..ea53a6dad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,16 @@ go_import_path: github.com/cloudflare/unsee jobs: include: + - stage: Lint docs + language: node_js + node_js: "8" + cache: + directories: + - node_modules + # install defaults to "npm install", which is done via make + install: [] + script: make lint-docs + - stage: Test Go code language: go go: "1.9.2" diff --git a/Makefile b/Makefile index 7568b67b7..27025acbe 100644 --- a/Makefile +++ b/Makefile @@ -113,8 +113,12 @@ lint-go: .build/deps-lint-go.ok lint-js: .build/deps-build-node.ok $(CURDIR)/node_modules/.bin/eslint --quiet assets/static/*.js +.PHONY: lint-docs +lint-docs: .build/deps-build-node.ok + $(CURDIR)/node_modules/.bin/markdownlint *.md docs + .PHONY: lint -lint: lint-go lint-js +lint: lint-go lint-js lint-docs # Creates mock bindata_assetfs.go with source assets rather than webpack generated ones .PHONY: mock-assets diff --git a/package-lock.json b/package-lock.json index beeba48da..6ed8ed4cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1767,6 +1767,15 @@ "delayed-stream": "1.0.0" } }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -2131,6 +2140,12 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -2296,6 +2311,12 @@ "tapable": "0.2.8" } }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, "eonasdan-bootstrap-datetimepicker": { "version": "4.17.47", "resolved": "https://registry.npmjs.org/eonasdan-bootstrap-datetimepicker/-/eonasdan-bootstrap-datetimepicker-4.17.47.tgz", @@ -4073,6 +4094,12 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", @@ -4392,6 +4419,12 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "inquirer": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", @@ -5976,6 +6009,15 @@ "type-check": "0.3.2" } }, + "linkify-it": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz", + "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=", + "dev": true, + "requires": { + "uc.micro": "1.0.3" + } + }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -6096,6 +6138,12 @@ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", "dev": true }, + "lodash.flatten": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.3.0.tgz", + "integrity": "sha1-5exO/ofvxZzlL5F8uovxYGNkac8=", + "dev": true + }, "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", @@ -6155,6 +6203,12 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, + "lodash.values": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.2.0.tgz", + "integrity": "sha1-kyYl99LJVLY9uJUlVUjztJ8SDpo=", + "dev": true + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -6228,6 +6282,59 @@ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, + "markdown-it": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.3.2.tgz", + "integrity": "sha512-4J92IhJq1kGoyXddwzzfjr9cEKGexBfFsZooKYMhMLLlWa4+dlSPDUUP7y+xQOCebIj61aLmKlowg//YcdPP1w==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "entities": "1.1.1", + "linkify-it": "2.0.3", + "mdurl": "1.0.1", + "uc.micro": "1.0.3" + } + }, + "markdownlint": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.6.4.tgz", + "integrity": "sha512-gcojwPjnWIE6qJh16veEN2k62rkJdXEznAaupbNiBpwHlMqFqh5SMA5/YPJO6/uEpwn2NJjSYkYk2OcIWvgkeQ==", + "dev": true, + "requires": { + "markdown-it": "8.3.2" + } + }, + "markdownlint-cli": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.6.0.tgz", + "integrity": "sha512-gRkrvv2WrUTp/jbY+GZxyKPc10Bad5AmX0pnJWHX2eoaRDzFcrTGKTHzSXkyyy0fhBoXF7kgR/7FLvlz+agi3A==", + "dev": true, + "requires": { + "commander": "2.9.0", + "deep-extend": "0.4.2", + "glob": "7.0.6", + "lodash.flatten": "4.3.0", + "lodash.values": "4.2.0", + "markdownlint": "0.6.4", + "rc": "1.1.7" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, "masonry-layout": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.0.tgz", @@ -6265,6 +6372,12 @@ } } }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, "mem": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", @@ -7742,6 +7855,26 @@ "resolved": "https://registry.npmjs.org/raven-js/-/raven-js-3.19.1.tgz", "integrity": "sha512-E01uqSgP4JJIZNCaug2rV8g3JcIabLP09POLJ6wpM0oWftfnjqIWHYipUuscltCjQAxsPV3FFnMkW22/93qgig==" }, + "rc": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.7.tgz", + "integrity": "sha1-xepWS7B6/5/TpbMukGwdOmWUD+o=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -8970,6 +9103,12 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "uc.micro": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.3.tgz", + "integrity": "sha1-ftUNXg+an7ClczeSWfKndFjVAZI=", + "dev": true + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", diff --git a/package.json b/package.json index b914cd202..1c5dbfaf3 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "jest": "^21.2.1", "jquery-bridget": "^2.0.1", "less": "^2.7.3", + "markdownlint-cli": "^0.6.0", "mock-xhr": "^0.1.0", "node-sass": "^4.6.0", "resolve-url-loader": "^2.2.0",