Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 148 additions & 0 deletions .github/workflows/update_unary_database.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
#/
# @license Apache-2.0
#
# Copyright (c) 2025 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: update_unary_database

# Workflow triggers:
on:
push:
paths:
# List paths for which changes should trigger this workflow:
- 'lib/node_modules/@stdlib/math/special/data/unary_function_database.json'
- 'lib/node_modules/@stdlib/math/base/special/*/package.json'

# Allow the workflow to be manually run:
workflow_dispatch:

# Global permissions:
permissions:
# Allow read-only access to the repository contents:
contents: read

# Workflow jobs:
jobs:

# Define a job for updating the unary database...
update:

# Define a display name:
name: 'Update Unary Database'

# Ensure the job does not run on forks:
if: github.repository == 'stdlib-js/stdlib'

# Define the type of virtual host machine:
runs-on: ubuntu-latest

# Define the sequence of job steps...
steps:

# Checkout the repository:
- name: 'Checkout repository'
# Pin action to full length commit SHA
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
# Specify whether to remove untracked files before checking out the repository:
clean: true

# Limit clone depth to the most recent commit:
fetch-depth: 1

# Specify whether to download Git-LFS files:
lfs: false

# Avoid storing GitHub token in local Git configuration:
persist-credentials: false
timeout-minutes: 10

# Install Node.js:
- name: 'Install Node.js'
# Pin action to full length commit SHA
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '20' # 'lts/*'
timeout-minutes: 5

# Install dependencies (accounting for possible network failures, etc, when installing node module dependencies):
- name: 'Install dependencies'
run: |
make install-node-modules || make install-node-modules || make install-node-modules
timeout-minutes: 15

# Update the unary database:
- name: 'Update unary database'
run: |
node lib/node_modules/@stdlib/math/special/scripts/generate_unary_database.js

# Check if there are any changes to the unary database:
- name: 'Check for changes'
id: check_changes
run: |
if [ -z "$(git diff lib/node_modules/@stdlib/math/special/data/unary.json)" ]; then
echo "No changes detected in unary database. Skipping PR creation."
echo "has_changes=false" >> $GITHUB_OUTPUT
else
echo "Changes detected in unary database."
echo "has_changes=true" >> $GITHUB_OUTPUT
fi

# Import GPG key to sign commits:
- name: 'Import GPG key to sign commits'
if: steps.check_changes.outputs.has_changes == 'true'
# Pin action to full length commit SHA
uses: crazy-max/ghaction-import-gpg@e89d40939c28e39f97cf32126055eeae86ba74ec # v6.3.0
with:
gpg_private_key: ${{ secrets.STDLIB_BOT_GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.STDLIB_BOT_GPG_PASSPHRASE }}
git_user_signingkey: true
git_commit_gpgsign: true

# Create a pull request with the updated unary database:
- name: 'Create pull request'
if: steps.check_changes.outputs.has_changes == 'true'
id: cpr
# Pin action to full length commit SHA
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
title: 'feat: update unary database'
body: |
This PR

- updates the unary database based on changes to the unary function database or package.json scaffold fields

commit-message: 'feat: update unary database'
committer: 'stdlib-bot <[email protected]>'
signoff: true
token: ${{ secrets.STDLIB_BOT_PAT_REPO_WRITE }}
labels: |
automated-pr
team-reviewers: |
reviewers
branch: update-unary-database
delete-branch: true

# Create a pull request summary:
- name: 'Create summary'
if: steps.check_changes.outputs.has_changes == 'true'
run: |
echo "# :tada: Pull Request created! :tada:" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Pull request ${{ steps.cpr.outputs.pull-request-number }} was successfully ${{ steps.cpr.outputs.pull-request-operation }}."
echo ":link: [${{ steps.cpr.outputs.pull-request-url }}](${{ steps.cpr.outputs.pull-request-url }})." >> $GITHUB_STEP_SUMMARY
echo "Head SHA: [${{ steps.cpr.outputs.pull-request-head-sha }}](${{ steps.cpr.outputs.pull-request-url }}/commits/${{ steps.cpr.outputs.pull-request-head-sha }})." >> $GITHUB_STEP_SUMMARY