mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-22 19:07:54 +01:00
8109c13e66
## About the changes
This enables strictNullChecks which will give us nice hints in our IDEs
to avoid introducing more and hopefully will encourage us to fix some of
the existing problems.
Also:
1. The compiler explicitly ignores these errors
2. The "null checks action" still verifies we're not introducing new
ones.
The combination of these two things should help us to reduce the number
of nulls
For testing that the action still works (cause it was modified), [a
commit](5c4b818d1a
)
was added introducing a bunch of null check errors:
https://github.com/Unleash/unleash/actions/runs/4364648191/jobs/7632224720
73 lines
2.5 KiB
YAML
73 lines
2.5 KiB
YAML
name: Lower null checks
|
|
|
|
on:
|
|
pull_request:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
MAIN_BRANCH: main
|
|
|
|
strategy:
|
|
matrix:
|
|
node-version: [16.x]
|
|
|
|
steps:
|
|
- name: Checkout current branch
|
|
uses: actions/checkout@v3
|
|
with:
|
|
path: current
|
|
- name: Checkout main branch
|
|
uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ env.MAIN_BRANCH }}
|
|
path: main
|
|
- name: Use Node.js ${{ matrix.node-version }}
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: 'yarn'
|
|
cache-dependency-path: |
|
|
current/yarn.lock
|
|
main/yarn.lock
|
|
- name: Compare errors if enabling strictNullChecks
|
|
env:
|
|
URL: ${{ github.event.pull_request.comments_url }}
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
comment () {
|
|
curl -X POST $URL \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: token $GITHUB_TOKEN" \
|
|
--data "{ \"body\": \"${1}\" }"
|
|
}
|
|
|
|
YARN_1="yarn --mutex network --cwd ./current"
|
|
YARN_2="yarn --mutex network --cwd ./main"
|
|
|
|
$YARN_1 install --ignore-scripts &> /dev/null && $YARN_1 build --strictNullChecks true 2> .stderr-current > .out-current &
|
|
pid1=$!
|
|
$YARN_2 install --ignore-scripts &> /dev/null && $YARN_2 build --strictNullChecks true 2> .stderr-main > .out-main &
|
|
pid2=$!
|
|
|
|
# wait for the processes that are expected to fail
|
|
set +e
|
|
wait $pid1
|
|
wait $pid2
|
|
set -e
|
|
|
|
CURRENT=$(grep "Found [0-9]* errors" .out-current | sed 's/Found \(.*\) errors in .* files./\1/')
|
|
MAIN=$(grep "Found [0-9]* errors" .out-main | sed 's/Found \(.*\) errors in .* files./\1/')
|
|
|
|
if [ $CURRENT -gt $MAIN ]; then
|
|
comment "After enabling [\`strictNullChecks\`](https://www.typescriptlang.org/tsconfig#strictNullChecks) this PR would be **increasing** the number of null check errors from ${MAIN} to ${CURRENT}. <br /> Make sure your branch is up-to-date with ${MAIN_BRANCH} and **check the diff in the console output** to pinpoint the offending files."
|
|
diff .out-current .out-main
|
|
exit 1
|
|
else
|
|
echo "The PR has $CURRENT null check errors against $MAIN in main. You're good to go!"
|
|
fi |