diff --git a/.git-hooks/commit-msg b/.git-hooks/commit-msg new file mode 100755 index 0000000..e0297de --- /dev/null +++ b/.git-hooks/commit-msg @@ -0,0 +1,18 @@ +#!/bin/sh +RED="\033[1;31m" +GREEN="\033[1;32m" + +# Get the commit message (the parameter we're given is just the path to the +# temporary file which holds the message). +commit_message=$(cat "$1") + +if (echo "$commit_message" | grep -Eq "^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([a-z \-]+\))?!?: .+$") then + echo "${GREEN} ✔ Commit message meets Conventional Commit standards" + exit 0 +fi + +echo "${RED}❌ Commit message does not meet the Conventional Commit standard!" +echo "An example of a valid message is:" +echo " feat(login): add the 'remember me' button" +echo "ℹ More details at: https://www.conventionalcommits.org/en/v1.0.0/#summary" +exit 1 \ No newline at end of file diff --git a/.git-hooks/pre-commit b/.git-hooks/pre-commit new file mode 100755 index 0000000..f592f8a --- /dev/null +++ b/.git-hooks/pre-commit @@ -0,0 +1,2 @@ +#!/bin/sh +sasjs lint \ No newline at end of file diff --git a/.npmignore b/.npmignore index 2296cad..443ea0e 100644 --- a/.npmignore +++ b/.npmignore @@ -3,8 +3,9 @@ build.py .gitpod* tests/ sasjs/ -.vscode/ .github/ +.git-hooks/ +.vscode/ main.dox make_singlefile.sh *.md diff --git a/README.md b/README.md index fa66941..b8fb434 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ ![Snyk Vulnerabilities for npm package](https://img.shields.io/snyk/vulnerabilities/npm/@sasjs/core) [![License](https://img.shields.io/apm/l/atomic-design-ui.svg)](/LICENSE) ![GitHub top language](https://img.shields.io/github/languages/top/sasjs/core) +[![GitHub closed issues](https://img.shields.io/github/issues-closed-raw/sasjs/core)](https://github.com/sasjs/core/issues?q=is%3Aissue+is%3Aclosed) +[![GitHub issues](https://img.shields.io/github/issues-raw/sasjs/core)](https://github.com/sasjs/core/issues) ![total lines](https://tokei.rs/b1/github/sasjs/core) [![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/sasjs/core) @@ -171,7 +173,7 @@ When contributing to this library, it is therefore important to ensure that all ## Star Gazing -If you find this library useful, help us grow our star graph! +If you find this library useful, please leave a [star](https://github.com/sasjs/core/stargazers) and help us grow our star graph! ![](https://starchart.cc/sasjs/core.svg) diff --git a/package-lock.json b/package-lock.json index d1c195f..7a6f94f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,9 +4,9 @@ "lockfileVersion": 1, "dependencies": { "@sasjs/adapter": { - "version": "2.2.18", - "resolved": "https://registry.npmjs.org/@sasjs/adapter/-/adapter-2.2.18.tgz", - "integrity": "sha512-Em4cojWXK07ePhR3ovHEwSl2zTWRjJQfeR/2k/iL8uQ7uFSsknKgE9095+MaYDhwseN+heDEMoU8+Q8QB8qU1A==", + "version": "2.2.19", + "resolved": "https://registry.npmjs.org/@sasjs/adapter/-/adapter-2.2.19.tgz", + "integrity": "sha512-M5G9V7GmhNmUOCEEiiPq8WeR9BTcvE1fmyEKFQDfJYuuJF7fG0OC+bZjZ/++qWkW8r3IFteu5y+Id9KswxkNCw==", "dev": true, "requires": { "@sasjs/utils": "^2.10.2", @@ -16,13 +16,13 @@ } }, "@sasjs/cli": { - "version": "2.19.3", - "resolved": "https://registry.npmjs.org/@sasjs/cli/-/cli-2.19.3.tgz", - "integrity": "sha512-H5CmYVHqHqa2jhNW0xKIzUvZcAHomOg20AHUSETrccVdVALAsEschICnhz5PwD2ebga8UzWhwqHhGnBPjYy18A==", + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/@sasjs/cli/-/cli-2.22.2.tgz", + "integrity": "sha512-FdQUWVJ0bAj1HOwfMtChMD8v9I0r49BBcYarJ4lSMMbFWwvVgnUmuD2s5sf6quKdyPP12XM06kz3gMYO++NlPg==", "dev": true, "requires": { - "@sasjs/adapter": "2.2.18", - "@sasjs/core": "2.26.0", + "@sasjs/adapter": "2.2.19", + "@sasjs/core": "^2.30.6", "@sasjs/lint": "1.8.0", "@sasjs/utils": "2.12.1", "@types/url-parse": "1.4.3", @@ -47,9 +47,9 @@ } }, "@sasjs/core": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/@sasjs/core/-/core-2.26.0.tgz", - "integrity": "sha512-CTuRksG9XSKY5nkBB+Z7Fd4pR606ZzZaPw8IcKFtJp0csPZjLEDrc/qQ91jeB6znRbMjF7/WY+JtK/Sg5ZnEDg==", + "version": "2.30.6", + "resolved": "https://registry.npmjs.org/@sasjs/core/-/core-2.30.6.tgz", + "integrity": "sha512-OqXEGQ58Ex/6O3OHx9IVcxPAkP17H9NpX6L1/ccAKQ3alBeLKf6xXayUSuM7NtgxumxA9rKYf5R7Ijnfn4H2ow==", "dev": true }, "@sasjs/lint": { @@ -82,9 +82,9 @@ "dev": true }, "@types/prompts": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/prompts/-/prompts-2.0.11.tgz", - "integrity": "sha512-dcF5L3rU9VfpLEJIV++FEyhGhuIpJllNEwllVuJ5g8eoVqjf048tW9+spivIwjzgPbtaGAl7mIZW3cmhDAq2UQ==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@types/prompts/-/prompts-2.0.12.tgz", + "integrity": "sha512-Hr6osqfNg3IcQT3pJDXCsSnb0KnldY/hXeJCKJriwbZLnedN9n1e8kcZwLc25GIWULDb6h5aEyOBbf33XpZBXQ==", "dev": true, "requires": { "@types/node": "*" @@ -309,14 +309,6 @@ "dev": true, "requires": { "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true - } } }, "clone": { @@ -341,9 +333,9 @@ "dev": true }, "colors": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", "dev": true }, "combined-stream": { @@ -355,12 +347,6 @@ "delayed-stream": "~1.0.0" } }, - "commander": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", - "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -573,16 +559,6 @@ "traverse-chain": "~0.1.0" } }, - "findup": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz", - "integrity": "sha1-itkpozk7rGJ5V6fl3kYjsGsOLOs=", - "dev": true, - "requires": { - "colors": "~0.6.0-1", - "commander": "~2.1.0" - } - }, "follow-redirects": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", @@ -654,20 +630,6 @@ "assert-plus": "^1.0.0" } }, - "ghooks": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/ghooks/-/ghooks-2.0.4.tgz", - "integrity": "sha1-/VDgQP9UiQauQstReToBv+JFZ7k=", - "dev": true, - "requires": { - "findup": "0.1.5", - "lodash.clone": "4.5.0", - "manage-path": "2.0.0", - "opt-cli": "1.5.1", - "path-exists": "3.0.0", - "spawn-command": "0.0.2" - } - }, "glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -712,12 +674,6 @@ "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "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 - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -986,18 +942,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "lodash._baseclone": { - "version": "4.5.7", - "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-4.5.7.tgz", - "integrity": "sha1-zkKt4IOE711i+nfDD2GkbmhvhDQ=", - "dev": true - }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", - "dev": true - }, "lodash.groupby": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", @@ -1020,12 +964,6 @@ "is-unicode-supported": "^0.1.0" } }, - "manage-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/manage-path/-/manage-path-2.0.0.tgz", - "integrity": "sha1-9M+EV7km7u4qg7FzUBQUvHbrlZc=", - "dev": true - }, "mime-db": { "version": "1.47.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", @@ -1092,44 +1030,6 @@ "mimic-fn": "^2.1.0" } }, - "opt-cli": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/opt-cli/-/opt-cli-1.5.1.tgz", - "integrity": "sha1-BNtEexPJa5kusxaFJm9O0NlzbcI=", - "dev": true, - "requires": { - "commander": "2.9.0", - "lodash.clone": "4.3.2", - "manage-path": "2.0.0", - "spawn-command": "0.0.2-1" - }, - "dependencies": { - "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.0" - } - }, - "lodash.clone": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.3.2.tgz", - "integrity": "sha1-5WsXa2gjp93jj38r9Y3n1ZcSAOk=", - "dev": true, - "requires": { - "lodash._baseclone": "~4.5.0" - } - }, - "spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", - "dev": true - } - } - }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -1173,12 +1073,6 @@ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1436,12 +1330,6 @@ "dev": true, "optional": true }, - "spawn-command": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", - "integrity": "sha1-lUThpDygRfhTGqwaSMspva5iM44=", - "dev": true - }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", diff --git a/package.json b/package.json index 820841f..5c59c4b 100644 --- a/package.json +++ b/package.json @@ -29,11 +29,11 @@ "build": "sasjs cbd -t viya", "docs": "sasjs doc && ./sasjs/utils/build.sh", "test": "sasjs test -t viya", - "lint": "sasjs lint" + "lint": "sasjs lint", + "postinstall": "[ -d .git ] && git config core.hooksPath ./.git-hooks || true" }, "devDependencies": { - "@sasjs/cli": "^2.19.3", - "ghooks": "^2.0.4" + "@sasjs/cli": "^2.22.2" }, "config": { "ghooks": {