From b12e63944c5f99c5cf12b2f3ade9b2d44f50e141 Mon Sep 17 00:00:00 2001 From: Chris Wilkinson Date: Tue, 5 Apr 2022 11:24:00 +0100 Subject: [PATCH] ci: format code Uses Prettier (https://prettier.io/) to find style issues in the code. --- .github/workflows/checks.yml | 27 ++++++++ .prettierignore | 1 + .prettierrc | 7 ++ package-lock.json | 125 ++++++++++++++++++++++++++++++++++- package.json | 6 +- 5 files changed, 164 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/checks.yml create mode 100644 .prettierignore create mode 100644 .prettierrc diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml new file mode 100644 index 0000000..ec20753 --- /dev/null +++ b/.github/workflows/checks.yml @@ -0,0 +1,27 @@ +name: Checks + +on: + push: + branches: + - '**' + pull_request: + +jobs: + format: + runs-on: ubuntu-20.04 + + steps: + - name: 'Checkout code' + uses: actions/checkout@v2 + + - name: 'Set up Node.js' + uses: actions/setup-node@v2 + with: + node-version: 16 + cache: ${{ !env.ACT && 'npm' || '' }} + + - name: 'Install dependencies' + run: npm ci + + - name: 'Run formatter' + run: npm run format diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..2d2253a --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +/.husky/_/ diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..c54e951 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "arrowParens": "avoid", + "printWidth": 120, + "semi": false, + "singleQuote": true, + "trailingComma": "all" +} diff --git a/package-lock.json b/package-lock.json index 40b0f24..e66a590 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,9 @@ "devDependencies": { "@commitlint/cli": "^16.2.3", "@commitlint/config-conventional": "^16.2.1", - "husky": "^7.0.4" + "husky": "^7.0.4", + "prettier": "^2.6.2", + "prettier-plugin-sh": "^0.10.0" } }, "node_modules/@babel/code-frame": { @@ -1285,6 +1287,18 @@ "node": ">= 6" } }, + "node_modules/nanoid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", @@ -1429,6 +1443,37 @@ "node": ">=8" } }, + "node_modules/prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-sh": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-sh/-/prettier-plugin-sh-0.10.0.tgz", + "integrity": "sha512-sRxd+GH9xYD9EXuuEGpJSKJBBLKDQY6Fw1TViHEpF1Ce2Oo7CYKQ3fktDBwEDhnXQmo65y/+yovaJGIVR8zaAg==", + "dev": true, + "dependencies": { + "sh-syntax": "^0.1.3", + "synckit": "^0.6.2" + }, + "engines": { + "node": ">=12.20" + }, + "peerDependencies": { + "prettier": "^2.0.0" + } + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -1695,6 +1740,19 @@ "node": ">=10" } }, + "node_modules/sh-syntax": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/sh-syntax/-/sh-syntax-0.1.3.tgz", + "integrity": "sha512-h7PHRWnFzzIam5yFNON7deCoRb3DQBOlkP0cWXW7mTytNcDGDF3P0i1BDMmxmzuK6UxbVyANgiaQ73z4eDv2XQ==", + "dev": true, + "dependencies": { + "nanoid": "^3.3.2", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=v12.20" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -1843,6 +1901,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.6.2.tgz", + "integrity": "sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=12.20" + } + }, "node_modules/text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", @@ -1919,6 +1989,12 @@ } } }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, "node_modules/type-fest": { "version": "0.18.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", @@ -3064,6 +3140,12 @@ "kind-of": "^6.0.3" } }, + "nanoid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", + "dev": true + }, "normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", @@ -3163,6 +3245,22 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true + }, + "prettier-plugin-sh": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-sh/-/prettier-plugin-sh-0.10.0.tgz", + "integrity": "sha512-sRxd+GH9xYD9EXuuEGpJSKJBBLKDQY6Fw1TViHEpF1Ce2Oo7CYKQ3fktDBwEDhnXQmo65y/+yovaJGIVR8zaAg==", + "dev": true, + "requires": { + "sh-syntax": "^0.1.3", + "synckit": "^0.6.2" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -3349,6 +3447,16 @@ "lru-cache": "^6.0.0" } }, + "sh-syntax": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/sh-syntax/-/sh-syntax-0.1.3.tgz", + "integrity": "sha512-h7PHRWnFzzIam5yFNON7deCoRb3DQBOlkP0cWXW7mTytNcDGDF3P0i1BDMmxmzuK6UxbVyANgiaQ73z4eDv2XQ==", + "dev": true, + "requires": { + "nanoid": "^3.3.2", + "tslib": "^2.3.1" + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3470,6 +3578,15 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "synckit": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.6.2.tgz", + "integrity": "sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, "text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", @@ -3518,6 +3635,12 @@ "yn": "3.1.1" } }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, "type-fest": { "version": "0.18.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", diff --git a/package.json b/package.json index 423b62d..d010b16 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,13 @@ "devDependencies": { "@commitlint/cli": "^16.2.3", "@commitlint/config-conventional": "^16.2.1", - "husky": "^7.0.4" + "husky": "^7.0.4", + "prettier": "^2.6.2", + "prettier-plugin-sh": "^0.10.0" }, "scripts": { + "format": "prettier --ignore-unknown --check '**'", + "format:fix": "npm run format -- --write", "prepare": "which husky && husky install || true" } }