diff --git a/.github/labeler.yml b/.github/labeler.yml index 8b9a45c415a..1408cbda313 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -20,6 +20,10 @@ BLAS: - changed-files: - any-glob-to-all-files: '**/blas/**/*' +LAPACK: +- changed-files: + - any-glob-to-all-files: '**/lapack/**/*' + Math: - changed-files: - any-glob-to-all-files: '**/math/**/*' diff --git a/.github/workflows/autoclose.yml b/.github/workflows/autoclose.yml new file mode 100644 index 00000000000..fe76d616251 --- /dev/null +++ b/.github/workflows/autoclose.yml @@ -0,0 +1,181 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# Workflow name: +name: autclose + +# Workflow triggers: +on: + pull_request_target: + types: + - labeled + +# Workflow jobs: +jobs: + + # Define a job which closes a pull request if a contributor failed to setup EditorConfig: + editorconfig: + + # Define job name: + name: 'Check for EditorConfig label' + + # Only run this job if the pull request has a specific label: + if: "${{ github.event.label.name == 'autoclose: EditorConfig' }}" + + # Define job permissions: + permissions: + contents: read + pull-requests: write + + # Define the type of virtual host machine: + runs-on: ubuntu-latest + + # Define the sequence of job steps: + steps: + + # Close the pull request: + - name: 'Close pull request' + run: gh pr close "$NUMBER" --comment "$BODY" + env: + GH_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + NUMBER: ${{ github.event.pull_request.number }} + BODY: | + Thank you for working on this pull request. However, we cannot accept your contribution as this pull request does not follow our [contributing guidelines](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md). + + Per the guidelines outlined in our [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md), you should download and setup [EditorConfig](http://editorconfig.org/) to ensure that files are automatically configured to use expected indentation and line endings. + + If you would prefer to avoid manual setup, you could also consider using a pre-configured [development container](https://github.com/stdlib-js/stdlib/tree/develop/.devcontainer) for use locally or in GitHub Codespaces. + + Thank you again for your interest in stdlib, and we look forward to reviewing your future contriubtions. + + # Define a job which closes a pull request if a contributor failed to follow contributing guidelines: + contributor_guidelines: + + # Define job name: + name: 'Check for contributor guidelines label' + + # Only run this job if the pull request has a specific label: + if: "${{ github.event.label.name == 'autoclose: Contributor Guidelines' }}" + + # Define job permissions: + permissions: + contents: read + pull-requests: write + + # Define the type of virtual host machine: + runs-on: ubuntu-latest + + # Define the sequence of job steps: + steps: + + # Close the pull request: + - name: 'Close pull request' + run: gh pr close "$NUMBER" --comment "$BODY" + env: + GH_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + NUMBER: ${{ github.event.pull_request.number }} + BODY: | + Thank you for working on this pull request. However, we cannot accept your contribution as this pull request does not follow our [contributing guidelines](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md). + + Per the guidelines outlined in our [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md), you should have setup your local development environment such that automated development processes for linting, license verification, and unit testing can run prior to authoring commits and pushing changes. We encourage you to refer to that guide **before** continuing to work on this pull request. + + If you would prefer to avoid manual setup, you could also consider using a pre-configured [development container](https://github.com/stdlib-js/stdlib/tree/develop/.devcontainer) for use locally or in GitHub Codespaces. + + Thank you again for your interest in stdlib, and we look forward to reviewing your future contriubtions. + + # Define a job which closes a pull request if a contributor failed to follow project conventions: + project_conventions: + + # Define job name: + name: 'Check for project conventions label' + + # Only run this job if the pull request has a specific label: + if: "${{ github.event.label.name == 'autoclose: Project Conventions' }}" + + # Define job permissions: + permissions: + contents: read + pull-requests: write + + # Define the type of virtual host machine: + runs-on: ubuntu-latest + + # Define the sequence of job steps: + steps: + + # Close the pull request: + - name: 'Close pull request' + run: gh pr close "$NUMBER" --comment "$BODY" + env: + GH_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + NUMBER: ${{ github.event.pull_request.number }} + BODY: | + Thank you for working on this pull request. However, we cannot accept your contribution as this pull request does not follow project conventions. + + We place a high value on consistency throughout the stdlib codebase, and this pull request was found to significantly deviate from stdlib conventions. We encourage you to closely examine other packages in stdlib and attempt to emulate the practices and conventions found therein. + + - If you are attempting to contribute a new package, sometimes the best approach is to simply copy the contents of an existing package and then modify the minimum amount necessary to implement the feature (e.g., changing descriptions, parameter names, and implementation). + - If you are contributing tests, find a package implementing a similar feature and emulate the tests of that package. + - If you are updating documentation, examine several similar packages and emulate the content, style, and prose of those packages. + + In short, the more effort you put in to ensure that your contribution looks and feels like stdlib—including variables names, bracket spacing, line breaks, etc—the more likely that your contribution will be reviewed and ultimately accepted. We encourage you to closely study the codebase **before** continuing to work on this pull request. + + Thank you again for your interest in stdlib, and we look forward to reviewing your future contriubtions. + + # Define a job which closes a pull request if a pull request is considered spam: + spam: + + # Define job name: + name: 'Check for spam label' + + # Only run this job if the pull request has a specific label: + if: "${{ github.event.label.name == 'autoclose: Spam' }}" + + # Define job permissions: + permissions: + contents: read + pull-requests: write + + # Define the type of virtual host machine: + runs-on: ubuntu-latest + + # Define the sequence of job steps: + steps: + + # Close the pull request: + - name: 'Close pull request' + run: gh pr close "$NUMBER" --comment "$BODY" + env: + GH_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + NUMBER: ${{ github.event.pull_request.number }} + BODY: | + Thank you for working on this pull request. However, we cannot accept your contribution as this pull request does not meet the standards of this project. + + Thank you again for your interest in stdlib, and we look forward to reviewing your future contriubtions. + + # Lock pull request conversation: + - name: 'Lock conversation' + run: gh pr lock "$NUMBER" --reason spam + env: + GH_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + NUMBER: ${{ github.event.pull_request.number }} diff --git a/.github/workflows/check_contributing_guidelines_acceptance.yml b/.github/workflows/check_contributing_guidelines_acceptance.yml index 53b3ad594bc..8ab5ec614e1 100755 --- a/.github/workflows/check_contributing_guidelines_acceptance.yml +++ b/.github/workflows/check_contributing_guidelines_acceptance.yml @@ -40,7 +40,9 @@ on: # Trigger on pull request events: pull_request_target: - types: [opened, reopened] + types: + - opened + - reopened # Global permissions: permissions: diff --git a/.github/workflows/check_licenses.yml b/.github/workflows/check_licenses.yml index 81fb2ccd78e..27b84d46300 100644 --- a/.github/workflows/check_licenses.yml +++ b/.github/workflows/check_licenses.yml @@ -20,7 +20,7 @@ name: check_licenses # Workflow triggers: -on: [pull_request] +on: [ pull_request ] # Global permissions: permissions: diff --git a/.github/workflows/check_required_files.yml b/.github/workflows/check_required_files.yml index 5e4d2f4d6f6..bd04a98adb6 100644 --- a/.github/workflows/check_required_files.yml +++ b/.github/workflows/check_required_files.yml @@ -32,6 +32,7 @@ on: user: required: true type: string + # Define the secrets accessible by the workflow: secrets: STDLIB_BOT_GITHUB_TOKEN: diff --git a/.github/workflows/discussion_bot_response.yml b/.github/workflows/discussion_bot_response.yml deleted file mode 100644 index 99ca489c71b..00000000000 --- a/.github/workflows/discussion_bot_response.yml +++ /dev/null @@ -1,55 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2023 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: discussion_bot_response - -# Workflow triggers: -on: - discussion: - types: [created] - -# Global permissions: -permissions: - # Allow read-only access to the repository contents: - contents: read - -# Workflow jobs: -jobs: - respond: - # FIXME: disabled until determination whether enabling this bot is desirable/helpful - if: false - - # Define a display name: - name: 'Respond to question' - - # Define the conditions under which the job should run: FIXME: un-comment if and when re-enabled - # if: github.event.discussion.category.name == 'stdlib-bot Q&A' - - # Define the type of virtual host machine: - runs-on: ubuntu-latest - - # Define the sequence of job steps: - steps: - # Run the chatbot action: - - name: 'Run chatbot action' - # Pin action to full length commit SHA - uses: stdlib-js/stdlib-chat-bot@aaa9ebbeb4f4ec750bba5df5c152725bb84ee825 # v0.0.2 - with: - OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - GITHUB_TOKEN: ${{ secrets.CHATBOT_GITHUB_TOKEN }} diff --git a/.github/workflows/discussion_comment_bot_response.yml b/.github/workflows/discussion_comment_bot_response.yml deleted file mode 100644 index d554b961f49..00000000000 --- a/.github/workflows/discussion_comment_bot_response.yml +++ /dev/null @@ -1,55 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2023 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: discussion_comment_bot_response - -# Workflow triggers: -on: - discussion_comment: - types: [created] - -# Global permissions: -permissions: - # Allow read-only access to the repository contents: - contents: read - -# Workflow jobs: -jobs: - respond: - # FIXME: disabled until determination whether enabling this bot is desirable/helpful - if: false - - # Define a display name: - name: 'Respond to question' - - # Define the conditions under which the job should run: FIXME: un-comment if and when re-enabled - # if: github.event.comment.body && startsWith( github.event.comment.body, '/ask ' ) - - # Define the type of virtual host machine: - runs-on: ubuntu-latest - - # Define the sequence of job steps: - steps: - # Run the chatbot action: - - name: 'Run chatbot action' - # Pin action to full length commit SHA - uses: stdlib-js/stdlib-chat-bot@aaa9ebbeb4f4ec750bba5df5c152725bb84ee825 # v0.0.2 - with: - OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - GITHUB_TOKEN: ${{ secrets.CHATBOT_GITHUB_TOKEN }} diff --git a/.github/workflows/do_not_merge.yml b/.github/workflows/do_not_merge.yml new file mode 100644 index 00000000000..4f8154e8115 --- /dev/null +++ b/.github/workflows/do_not_merge.yml @@ -0,0 +1,60 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# Workflow name: +name: do_not_merge + +# Workflow triggers: +on: + pull_request: + types: + - synchronize + - opened + - reopened + - labeled + - unlabeled + +# Workflow jobs: +jobs: + + # Define a job which fails a pull request if the pull request has a "Do Not Merge" label: + do_not_merge: + + # Define job name: + name: 'Check for Do Not Merge label' + + # Only run this job if the pull request has a "Do Not Merge" label: + if: ${{ contains(github.event.*.labels.*.name, 'Do Not Merge') }} + + # Define job permissions: + permissions: + contents: read + pull-requests: write + + # Define the type of virtual host machine: + runs-on: ubuntu-latest + + # Define the sequence of job steps: + steps: + + # Fail the pull request: + - name: 'Prevent merge' + run: | + echo "Pull request is labeled as 'Do Not Merge'." + echo "This workflow fails so that the pull request cannot be merged." + exit 1 diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 94e11706f07..4b4e5e3d41b 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -17,7 +17,7 @@ #/ # Workflow name: -name: 'labeler' +name: labeler # Workflow triggers: on: diff --git a/.github/workflows/lint_pr_title.yml b/.github/workflows/lint_pr_title.yml new file mode 100644 index 00000000000..8304d42ae78 --- /dev/null +++ b/.github/workflows/lint_pr_title.yml @@ -0,0 +1,91 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# Workflow name: +name: lint_pr_title + +# Workflow triggers: +on: + pull_request: + types: + - synchronize + - opened + - reopened + +# Global permissions: +permissions: + # Allow read-only access to the repository contents: + contents: read + +# Workflow jobs: +jobs: + + # Define a job for linting PR titles... + lint_pr_title: + + # Define a display name: + name: 'Lint PR title' + + # Define the type of virtual host machine: + runs-on: ubuntu-latest + + # Set defaults: + defaults: + run: + # Set the default shell to `bash`: + shell: bash --noprofile --norc -eo pipefail {0} + + # Define the sequence of job steps... + steps: + + # Checkout the repository: + - name: 'Checkout repository' + # Pin action to full length commit SHA + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + with: + # Specify whether to remove untracked files before checking out the repository: + clean: false + + # Limit clone depth to the most recent 100 commits: + fetch-depth: 100 + + # Specify whether to download Git-LFS files: + lfs: false + timeout-minutes: 10 + + # Install Node.js: + - name: 'Install Node.js' + # Pin action to full length commit SHA + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + with: + node-version: '20' # 'lts/*' + timeout-minutes: 5 + + # Perform install sequence (accounting for possible network failures, etc, when installing node module dependencies): + - name: 'Perform install sequence' + run: | + make install-node-modules || make install-node-modules || make install-node-modules + timeout-minutes: 30 + + # Perform linting: + - name: 'Perform linting' + run: | + echo "Pull request titles should follow stdlib's Git commit message conventions." + echo "Linting pull request title..." + make lint-commit-message GIT_COMMIT_MESSAGE="'${{ github.event.pull_request.title }}'" + timeout-minutes: 5 diff --git a/.github/workflows/slash_commands.yml b/.github/workflows/slash_commands.yml index c7724977892..8dc6c330990 100644 --- a/.github/workflows/slash_commands.yml +++ b/.github/workflows/slash_commands.yml @@ -22,7 +22,9 @@ name: slash_commands # Workflow triggers: on: issue_comment: - types: [created, edited] + types: + - created + - edited # Workflow jobs: jobs: diff --git a/lib/node_modules/@stdlib/blas/base/ssyr2/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ssyr2/docs/types/index.d.ts index 78911e139f0..e83667158e2 100644 --- a/lib/node_modules/@stdlib/blas/base/ssyr2/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/blas/base/ssyr2/docs/types/index.d.ts @@ -81,7 +81,7 @@ interface Routine { * ssyr2.ndarray( 'upper', 3, 1.0, x, 1, 0, y, 1, 0, A, 3, 1, 0 ); * // A => [ 3.0, 6.0, 9.0, 0.0, 9.0, 14.0, 0.0, 0.0, 19.0 ] */ - ndarray( uplo: MatrixTriangle, N: number, alpha: number, x: Float32Array, strideX: number, offsetX: number, A: Float32Array, strideA1: number, strideA2: number, offsetA: number ): Float32Array; + ndarray( uplo: MatrixTriangle, N: number, alpha: number, x: Float32Array, strideX: number, offsetX: number, y: Float32Array, strideY: number, offsetY: number, A: Float32Array, strideA1: number, strideA2: number, offsetA: number ): Float32Array; } /** diff --git a/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ndarray.js index bd593f06a18..baba2433b76 100644 --- a/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ndarray.js @@ -33,7 +33,7 @@ var base = require( './base.js' ); * @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar -* @param {Float32Array} x - input vector +* @param {Float32Array} x - first input vector * @param {integer} strideX - `x` stride length * @param {NonNegativeInteger} offsetX - starting index for `x` * @param {Float32Array} y - second input vector diff --git a/lib/node_modules/@stdlib/blas/ext/base/sapxsum/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/sapxsum/manifest.json index b47a3000a77..c4a950608ab 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/sapxsum/manifest.json +++ b/lib/node_modules/@stdlib/blas/ext/base/sapxsum/manifest.json @@ -41,9 +41,9 @@ "@stdlib/blas/ext/base/sapxsumkbn", "@stdlib/napi/export", "@stdlib/napi/argv", - "@stdlib/napi/argv_int64", - "@stdlib/napi/argv_strided_float32array", - "@stdlib/napi/argv_float" + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-float32array", + "@stdlib/napi/argv-float" ] }, { diff --git a/lib/node_modules/@stdlib/blas/ext/base/sapxsum/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/sapxsum/src/addon.c index adc8eccf26c..70d6754c744 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/sapxsum/src/addon.c +++ b/lib/node_modules/@stdlib/blas/ext/base/sapxsum/src/addon.c @@ -16,7 +16,7 @@ * limitations under the License. */ -#include "stdlib/blas/base/sapxsum.h" +#include "stdlib/blas/ext/base/sapxsum.h" #include "stdlib/napi/export.h" #include "stdlib/napi/argv.h" #include "stdlib/napi/argv_float.h" diff --git a/lib/node_modules/@stdlib/lapack/base/docs/types/index.d.ts b/lib/node_modules/@stdlib/lapack/base/docs/types/index.d.ts index 4d5311c65a7..31df21c8eac 100644 --- a/lib/node_modules/@stdlib/lapack/base/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/lapack/base/docs/types/index.d.ts @@ -21,6 +21,7 @@ /* eslint-disable max-lines */ import dlacpy = require( '@stdlib/lapack/base/dlacpy' ); +import dlassq = require( '@stdlib/lapack/base/dlassq' ); import dlaswp = require( '@stdlib/lapack/base/dlaswp' ); import dpttrf = require( '@stdlib/lapack/base/dpttrf' ); @@ -61,6 +62,35 @@ interface Namespace { */ dlacpy: typeof dlacpy; + /** + * Returns an updated sum of squares represented in scaled form. + * + * @param N - number of indexed elements + * @param X - input array + * @param strideX - stride length for `X` + * @param scale - scaling factor + * @param sumsq - basic sum of squares from which output is factored out + * @returns output array + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var X = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + * + * var out = ns.dlassq( 4, X, 1, 1.0, 0.0, out ); + * // returns [ 1.0, 30.0 ] + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var X = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + * var out = new Float64Array( [ 0.0, 0.0 ] ); + * + * ns.dlassq.ndarray( 4, X, 1, 0, 1.0, 0.0, out, 1, 0 ); + * // out => [ 1.0, 30.0 ] + */ + dlassq: typeof dlassq; + /** * Performs a series of row interchanges on a matrix `A` using pivot indices stored in `IPIV`. * diff --git a/tools/make/lib/lint/git/Makefile b/tools/make/lib/lint/git/Makefile index d7e3d069ade..e6880432b0e 100644 --- a/tools/make/lib/lint/git/Makefile +++ b/tools/make/lib/lint/git/Makefile @@ -43,11 +43,11 @@ endif # @param {string} GIT_COMMIT_MESSAGE - Git commit message text # # @example -# make lint-commit-message +# make lint-commit-message GIT_COMMIT_MESSAGE='feat: add `foo/bar`' #/ lint-commit-message: ifeq ($(GIT_COMMIT_LINTER), commitlint) - $(QUIET) NODE_ENV="$(NODE_ENV)" NODE_PATH="$(NODE_PATH)" GIT_COMMIT_MESSAGE="$(GIT_COMMIT_MESSAGE)" $(MAKE) -f $(this_file) commitlint-message + $(QUIET) NODE_ENV="$(NODE_ENV)" NODE_PATH="$(NODE_PATH)" GIT_COMMIT_MESSAGE='$(GIT_COMMIT_MESSAGE)' $(MAKE) -f $(this_file) commitlint-message endif .PHONY: lint-commit-message diff --git a/tools/make/lib/lint/git/commitlint.mk b/tools/make/lib/lint/git/commitlint.mk index 5ab2f11f57f..18fa769c46d 100644 --- a/tools/make/lib/lint/git/commitlint.mk +++ b/tools/make/lib/lint/git/commitlint.mk @@ -92,10 +92,10 @@ commitlint: $(NODE_MODULES) commitlint-init # @private # # @example -# make commitlint-message +# make commitlint-message GIT_COMMIT_MESSAGE='feat: add `foo/bar`' #/ commitlint-message: $(NODE_MODULES) commitlint-init - $(QUIET) ( printf "$(GIT_COMMIT_MESSAGE)" | "$(COMMITLINT)" $(COMMITLINT_FLAGS) ) || ( $(MAKE) -f $(this_file) commitlint-cleanup && exit 1 ) + $(QUIET) ( printf '$(GIT_COMMIT_MESSAGE)' | "$(COMMITLINT)" $(COMMITLINT_FLAGS) ) || ( $(MAKE) -f $(this_file) commitlint-cleanup && exit 1 ) $(QUIET) $(MAKE) -f $(this_file) commitlint-cleanup .PHONY: commitlint-message