Skip to content

Commit 8b7894f

Browse files
Merge branch 'develop' of https://github.com/Neerajpathak07/stdlib into add-pmf
2 parents 20c6c0d + 88134a7 commit 8b7894f

File tree

5,797 files changed

+250537
-43433
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

5,797 files changed

+250537
-43433
lines changed

.editorconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ indent_style = tab
121121
[*.{md,md.txt}]
122122
indent_style = space
123123
indent_size = 4
124-
trim_trailing_whitespace = false
124+
trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim.
125125
126126
# Set properties for `usage.txt` files:
127127
[usage.txt]

.github/labeler.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,7 @@ REPL:
3535
Statistics:
3636
- changed-files:
3737
- any-glob-to-all-files: '**/stats/**/*'
38+
39+
Tools:
40+
- changed-files:
41+
- any-glob-to-all-files: '**/_tools/**/*'

.github/workflows/check_licenses.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ jobs:
128128
# Upload the log file:
129129
- name: 'Upload log file'
130130
# Pin action to full length commit SHA
131-
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
131+
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
132132
if: always()
133133
with:
134134
# Define a name for the uploaded artifact:

.github/workflows/label_commands.yml

Lines changed: 242 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
#/
2+
# @license Apache-2.0
3+
#
4+
# Copyright (c) 2024 The Stdlib Authors.
5+
#
6+
# Licensed under the Apache License, Version 2.0 (the "License");
7+
# you may not use this file except in compliance with the License.
8+
# You may obtain a copy of the License at
9+
#
10+
# http://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing, software
13+
# distributed under the License is distributed on an "AS IS" BASIS,
14+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
# See the License for the specific language governing permissions and
16+
# limitations under the License.
17+
#/
18+
19+
# Workflow name:
20+
name: label_commands
21+
22+
# Workflow triggers:
23+
on:
24+
pull_request_target:
25+
types:
26+
- labeled
27+
28+
# Workflow jobs:
29+
jobs:
30+
31+
# Define a job for removing the label and adding in-progress label:
32+
manage_labels:
33+
34+
# Define a display name:
35+
name: 'Manage labels'
36+
37+
# Define the type of virtual host machine:
38+
runs-on: ubuntu-latest
39+
40+
# Define the conditions under which the job should run:
41+
if: |
42+
github.event.label.name == 'bot: Merge' ||
43+
github.event.label.name == 'bot: Rebase' ||
44+
github.event.label.name == 'bot: Check Files' ||
45+
github.event.label.name == 'bot: Lint Autofix' ||
46+
github.event.label.name == 'bot: Update Copyright Years'
47+
48+
# Define the job's steps:
49+
steps:
50+
51+
- name: 'Remove label'
52+
# Pin action to full length commit SHA
53+
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
54+
with:
55+
github-token: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
56+
script: |
57+
try {
58+
await github.rest.issues.removeLabel({
59+
'owner': context.repo.owner,
60+
'repo': context.repo.repo,
61+
'issue_number': context.issue.number,
62+
'name': '${{ github.event.label.name }}'
63+
})
64+
} catch ( error ) {
65+
console.log( 'Error removing label: %s', error.message );
66+
}
67+
68+
- name: 'Add in-progress label'
69+
# Pin action to full length commit SHA
70+
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
71+
with:
72+
github-token: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
73+
script: |
74+
github.rest.issues.addLabels({
75+
'owner': context.repo.owner,
76+
'repo': context.repo.repo,
77+
'issue_number': context.issue.number,
78+
'labels': ['bot: In Progress']
79+
})
80+
81+
# Add initial reaction to comment with slash command:
82+
- name: 'Add initial reaction'
83+
run: |
84+
curl -X POST \
85+
-H "Accept: application/vnd.github.v3+json" \
86+
-H "Authorization: Bearer ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}" \
87+
"https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/reactions" \
88+
-d '{"content":"eyes"}'
89+
90+
# Define a job for checking for required files:
91+
check_files:
92+
93+
# Define a display name:
94+
name: 'Check for required files'
95+
96+
# Ensure initial reaction job has completed before running this job:
97+
needs: [ manage_labels ]
98+
99+
# Define the conditions under which the job should run:
100+
if: |
101+
github.event.label.name == 'bot: Check Files'
102+
103+
# Run reusable workflow:
104+
uses: ./.github/workflows/check_required_files.yml
105+
with:
106+
pull_request_number: ${{ github.event.pull_request.number }}
107+
user: ${{ github.event.sender.login }}
108+
secrets:
109+
STDLIB_BOT_GITHUB_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
110+
111+
# Define a job for updating copyright header years:
112+
update_copyright_years:
113+
114+
# Define a display name:
115+
name: 'Update copyright header years'
116+
117+
# Ensure initial reaction job has completed before running this job:
118+
needs: [ manage_labels ]
119+
120+
# Define the conditions under which the job should run:
121+
if: |
122+
github.event.label.name == 'bot: Update Copyright Years'
123+
124+
# Run reusable workflow:
125+
uses: ./.github/workflows/update_pr_copyright_years.yml
126+
with:
127+
pull_request_number: ${{ github.event.pull_request.number }}
128+
secrets:
129+
REPO_GITHUB_TOKEN: ${{ secrets.REPO_GITHUB_TOKEN }}
130+
STDLIB_BOT_GITHUB_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
131+
STDLIB_BOT_GPG_PRIVATE_KEY: ${{ secrets.STDLIB_BOT_GPG_PRIVATE_KEY }}
132+
STDLIB_BOT_GPG_PASSPHRASE: ${{ secrets.STDLIB_BOT_GPG_PASSPHRASE }}
133+
134+
# Define a job for auto-fixing lint errors:
135+
fix_lint_errors:
136+
137+
# Define a display name:
138+
name: 'Auto-fix lint errors'
139+
140+
# Ensure initial reaction job has completed before running this job:
141+
needs: [ manage_labels ]
142+
143+
# Define the conditions under which the job should run:
144+
if: |
145+
github.event.label.name == 'bot: Lint Autofix'
146+
147+
# Run reusable workflow:
148+
uses: ./.github/workflows/lint_autofix.yml
149+
with:
150+
pull_request_number: ${{ github.event.pull_request.number }}
151+
secrets:
152+
REPO_GITHUB_TOKEN: ${{ secrets.REPO_GITHUB_TOKEN }}
153+
STDLIB_BOT_GITHUB_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
154+
STDLIB_BOT_GPG_PRIVATE_KEY: ${{ secrets.STDLIB_BOT_GPG_PRIVATE_KEY }}
155+
STDLIB_BOT_GPG_PASSPHRASE: ${{ secrets.STDLIB_BOT_GPG_PASSPHRASE }}
156+
157+
# Define a job for merging develop branch:
158+
merge_develop:
159+
160+
# Define a display name:
161+
name: 'Merge changes from develop branch into this PR'
162+
163+
# Ensure initial reaction job has completed before running this job:
164+
needs: [ manage_labels ]
165+
166+
# Define the conditions under which the job should run:
167+
if: |
168+
github.event.label.name == 'bot: Merge'
169+
170+
# Run reusable workflow:
171+
uses: ./.github/workflows/pr_merge_develop.yml
172+
with:
173+
pull_request_number: ${{ github.event.pull_request.number }}
174+
secrets:
175+
REPO_GITHUB_TOKEN: ${{ secrets.REPO_GITHUB_TOKEN }}
176+
STDLIB_BOT_GITHUB_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
177+
STDLIB_BOT_GPG_PRIVATE_KEY: ${{ secrets.STDLIB_BOT_GPG_PRIVATE_KEY }}
178+
STDLIB_BOT_GPG_PASSPHRASE: ${{ secrets.STDLIB_BOT_GPG_PASSPHRASE }}
179+
180+
# Define a job for rebasing on develop branch:
181+
rebase_develop:
182+
183+
# Define a display name:
184+
name: 'Rebase this PR on top of develop branch'
185+
186+
# Ensure initial reaction job has completed before running this job:
187+
needs: [ manage_labels ]
188+
189+
# Define the conditions under which the job should run:
190+
if: |
191+
github.event.label.name == 'bot: Rebase'
192+
193+
# Run reusable workflow:
194+
uses: ./.github/workflows/pr_rebase_develop.yml
195+
with:
196+
pull_request_number: ${{ github.event.pull_request.number }}
197+
secrets:
198+
REPO_GITHUB_TOKEN: ${{ secrets.REPO_GITHUB_TOKEN }}
199+
STDLIB_BOT_GITHUB_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
200+
STDLIB_BOT_GPG_PRIVATE_KEY: ${{ secrets.STDLIB_BOT_GPG_PRIVATE_KEY }}
201+
STDLIB_BOT_GPG_PASSPHRASE: ${{ secrets.STDLIB_BOT_GPG_PASSPHRASE }}
202+
203+
# Define a job for removing the in-progress label:
204+
remove_progress_label:
205+
206+
# Define a display name:
207+
name: 'Remove in-progress label'
208+
209+
# Define the type of virtual host machine:
210+
runs-on: ubuntu-latest
211+
212+
# Ensure all previous jobs have completed before running this job:
213+
needs: [ manage_labels, check_files, update_copyright_years, fix_lint_errors, merge_develop, rebase_develop ]
214+
215+
# Define the conditions under which the job should run:
216+
if: |
217+
github.event.label.name == 'bot: Merge' ||
218+
github.event.label.name == 'bot: Rebase' ||
219+
github.event.label.name == 'bot: Check Files' ||
220+
github.event.label.name == 'bot: Lint Autofix' ||
221+
github.event.label.name == 'bot: Update Copyright Years'
222+
223+
# Define the job's steps:
224+
steps:
225+
- name: Remove in-progress label
226+
# Run the step regardless of the outcome of previous steps:
227+
if: always()
228+
# Pin action to full length commit SHA
229+
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
230+
with:
231+
github-token: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
232+
script: |
233+
try {
234+
await github.rest.issues.removeLabel({
235+
'owner': context.repo.owner,
236+
'repo': context.repo.repo,
237+
'issue_number': context.issue.number,
238+
'name': 'bot: In Progress'
239+
})
240+
} catch ( error ) {
241+
console.log( 'Error removing label: %s', error.message );
242+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#/
2+
# @license Apache-2.0
3+
#
4+
# Copyright (c) 2024 The Stdlib Authors.
5+
#
6+
# Licensed under the Apache License, Version 2.0 (the "License");
7+
# you may not use this file except in compliance with the License.
8+
# You may obtain a copy of the License at
9+
#
10+
# http://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing, software
13+
# distributed under the License is distributed on an "AS IS" BASIS,
14+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
# See the License for the specific language governing permissions and
16+
# limitations under the License.
17+
#/
18+
19+
# Workflow name:
20+
name: labeler_needs_changes
21+
22+
# Workflow triggers:
23+
on:
24+
pull_request_review:
25+
types: [submitted]
26+
27+
# Workflow jobs:
28+
jobs:
29+
30+
# Define a job which automatically labels pull requests as needing changes when a reviewer requests changes:
31+
add-needs-changes-label:
32+
33+
# Define job name:
34+
name: 'Add "Needs Changes" Label when Reviewer Requests Changes'
35+
36+
# Only run this job if the reviewer requested changes (but do not run on forks due to missing permissions):
37+
if: ${{ github.repository == 'stdlib-js/stdlib' && github.event.review.state == 'changes_requested' }}
38+
39+
# Define job permissions:
40+
permissions:
41+
contents: read
42+
pull-requests: write
43+
44+
# Define the type of virtual host machine:
45+
runs-on: ubuntu-latest
46+
47+
# Define the sequence of job steps:
48+
steps:
49+
50+
# Add "Needs Changes" label:
51+
- name: 'Add "Needs Changes" label'
52+
# Pin action to a known commit SHA for reproducibility:
53+
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
54+
with:
55+
script: |
56+
await github.rest.issues.addLabels({
57+
'owner': context.repo.owner,
58+
'repo': context.repo.repo,
59+
'issue_number': context.payload.pull_request.number,
60+
'labels': [ 'Needs Changes' ]
61+
})

.github/workflows/lint_changed_files.yml

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ permissions:
3939
jobs:
4040

4141
# Define a job for linting committed code...
42-
process:
42+
lint:
4343

4444
# Define a display name:
4545
name: 'Lint Changed Files'
@@ -72,8 +72,21 @@ jobs:
7272
node-version: '20' # 'lts/*'
7373
timeout-minutes: 5
7474

75+
# Cache dependencies:
76+
- name: 'Cache dependencies'
77+
# Pin action to full length commit SHA
78+
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
79+
id: cache
80+
with:
81+
path: |
82+
${{ github.workspace }}/node_modules
83+
key: ${{ runner.os }}-node-${{ hashFiles('**/package.json') }}
84+
restore-keys: |
85+
${{ runner.os }}-node-
86+
7587
# Install dependencies (accounting for possible network failures, etc, when installing node module dependencies):
7688
- name: 'Install dependencies'
89+
if: steps.cache.outputs.cache-hit != 'true'
7790
run: |
7891
make install-node-modules || make install-node-modules || make install-node-modules
7992
timeout-minutes: 15
@@ -104,7 +117,7 @@ jobs:
104117
files=$(echo "$files" | tr '\n' ' ' | sed 's/ $//')
105118
echo "files=${files}" >> $GITHUB_OUTPUT
106119
107-
# Lint file names
120+
# Lint file names:
108121
- name: 'Lint file names'
109122
run: |
110123
# Determine root directory:
@@ -116,6 +129,12 @@ jobs:
116129
# Lint filenames:
117130
echo "${{ steps.changed-files.outputs.files }}" || "${lint_filenames}"
118131
132+
# Lint files against EditorConfig:
133+
- name: 'Lint against EditorConfig'
134+
if: success() || failure()
135+
run: |
136+
make lint-editorconfig-files FILES="${{ steps.changed-files.outputs.files }}"
137+
119138
# Lint Markdown files:
120139
- name: 'Lint Markdown files'
121140
if: success() || failure()

0 commit comments

Comments
 (0)