Skip to content

feat(text-parser): New Cursor implementation that works with any node… #1325

feat(text-parser): New Cursor implementation that works with any node…

feat(text-parser): New Cursor implementation that works with any node… #1325

Workflow file for this run

name: Continuous Integration
on:
push:
branches:
- 'main'
- '[0-9]+.x'
pull_request:
schedule:
- cron: "0 0 * * SAT"
workflow_call:
workflow_dispatch:
permissions:
contents: read
jobs:
settings:
name: Settings
uses: ./.github/workflows/settings.yml
dependencies:
name: Dependencies checks
runs-on: ubuntu-latest
if: ${{ github.event_name != 'schedule' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PHP
uses: ./.github/actions/php
with:
version: "lowest"
dependencies: false
- name: Prepare
run: |
# Unwanted
# (because it will install whole "laravel/framework")
composer remove --no-interaction --no-progress --ansi --no-update "orchestra/testbench"
composer remove --no-interaction --no-progress --ansi --no-update --dev "orchestra/testbench"
# PHPStan
# (because it used only to run phpstan and will give false-positive)
composer remove --no-interaction --no-progress --ansi --no-update --dev "phpstan/*"
composer remove --no-interaction --no-progress --ansi --no-update --dev "larastan/larastan"
composer remove --no-interaction --no-progress --ansi --no-update --dev "spaze/phpstan-disallowed-calls"
- name: Install dependencies
uses: ramsey/composer-install@v3
- name: Install monorepo-builder
uses: ./.github/actions/tool
with:
tool: monorepo-builder
- name: Check package versions
run: |
composer run-script monorepo-builder
- name: Install composer-dependency-analyser
uses: ./.github/actions/tool
with:
tool: composer-dependency-analyser
- name: Check dependencies
run: |
composer run-script composer-dependency-analyser
dependencies-constraint:
name: Dependencies constraints
runs-on: ubuntu-latest
if: ${{ github.event_name != 'schedule' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PHP
uses: ./.github/actions/php
with:
version: "lowest"
dependencies: false
- name: Prepare
run: |
# Unwanted
# (because it will install whole "laravel/framework")
composer remove --no-interaction --no-progress --ansi --no-update "orchestra/testbench"
composer remove --no-interaction --no-progress --ansi --no-update --dev "orchestra/testbench"
# PHPStan
# (because it used only to run phpstan and will give false-positive)
composer remove --no-interaction --no-progress --ansi --no-update --dev "phpstan/*"
composer remove --no-interaction --no-progress --ansi --no-update --dev "larastan/larastan"
composer remove --no-interaction --no-progress --ansi --no-update --dev "spaze/phpstan-disallowed-calls"
- name: Install dependencies
uses: ramsey/composer-install@v3
with:
dependency-versions: lowest
- name: Check
run: |
# Prepare
mkdir -p tmp
# Locked packages
composer show --locked --direct --format=json | jq '.locked | map (.name + ":" + (.version | sub("^[^\\d]+"; ""))) | sort | .[]' -r > "tmp/locked.txt"
# Required packages
jq '.require + ."require-dev" | del(.[keys[] | select(startswith("ext-") or . == "php")]) | with_entries(.value |= (split("|") | first)) | to_entries | map (.key + ":" + (.value | sub("^[^\\d]+"; ""))) | unique | sort | .[]' -r composer.json > "tmp/required.txt"
# Compare
PACKAGES=$(comm -3 "tmp/required.txt" "tmp/locked.txt" | jq -nR '[inputs | select(length>0)] | map (. | sub("^[\\s]+"; "") | sub(":.+?$"; "")) | unique | sort | .[]' -r)
if [[ -n "${PACKAGES}" ]]; then
while IFS= read -r PKG
do
PKG_INSTALLED=$(grep -m1 "^${PKG}" "tmp/locked.txt" | sed -E 's/^[^:]+://')
PKG_REQUIRED=$(grep -m1 "^${PKG}" "tmp/required.txt" | sed -E 's/^[^:]+://')
echo "${PKG} version is ${PKG_REQUIRED} but ${PKG_INSTALLED} installed:"
env -u GITHUB_ACTIONS composer require "${PKG}:${PKG_REQUIRED}" --dry-run --with-all-dependencies --no-ansi |& sed 's/^/ /'
echo ' .'
done <<< "${PACKAGES}"
exit 1
fi
dependencies-package:
name: Dependencies checks
needs:
- settings
- dependencies
strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.settings.outputs.packages-names) }}
runs-on: ubuntu-latest
if: ${{ github.event_name != 'schedule' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PHP
uses: ./.github/actions/php
with:
version: "lowest"
dependencies: false
- name: Check composer.json
working-directory: ${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }}
run: |
composer validate
- name: Prepare
shell: bash
working-directory: ${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }}
run: |
# Unwanted
# (because it will install whole "laravel/framework")
composer remove --no-interaction --no-progress --ansi --no-update "orchestra/testbench"
composer remove --no-interaction --no-progress --ansi --no-update --dev "orchestra/testbench"
# Repositories for packages
# (because we need local version of the packages)
PACKAGES=$(echo '${{ needs.settings.outputs.packages-names }}' | jq 'map(select(. != "${{ matrix.package }}"))' | jq -c -r '.[]' | tr -d '\r')
while IFS= read -r PKG
do
composer config "repositories.${PKG}" path "../${PKG}"
done <<< "${PACKAGES}"
# Minimum Stability
# (otherwise it will fail for nested dependencies/packages)
composer config minimum-stability dev
composer config prefer-stable true
- name: Install dependencies
uses: ramsey/composer-install@v3
with:
working-directory: ${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }}
- name: Install composer-dependency-analyser
uses: ./.github/actions/tool
with:
tool: composer-dependency-analyser
- name: Check dependencies
run: |
composer run-script composer-dependency-analyser -- --composer-json="${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }}/composer.json"
phpcs:
name: PHP CodeSniffer
runs-on: ubuntu-latest
if: ${{ github.event_name != 'schedule' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PHP
uses: ./.github/actions/php
with:
dependencies: false
- name: Install phpcs
uses: ./.github/actions/tool
with:
tool: phpcs
- name: Execute
run: |
composer run-script phpcs -- --report=checkstyle | cs2pr
phpstan:
name: PHPStan
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PHP
uses: ./.github/actions/php
- name: Execute
run: |
composer run-script phpstan -- --error-format=checkstyle | cs2pr
phpunit:
name: Tests
uses: ./.github/workflows/phpunit.yml
with:
fast: true
phpunit-windows:
name: Windows tests
uses: ./.github/workflows/phpunit.yml
with:
fast: true
runs-on: '["windows-latest"]'
phpunit-package:
name: Package tests
needs:
- settings
- phpunit
strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.settings.outputs.packages-names) }}
uses: ./.github/workflows/phpunit.yml
with:
fast: ${{ github.event_name == 'schedule' }}
package: ${{ matrix.package }}
packages-names: ${{ needs.settings.outputs.packages-names }}
packages-directory: ${{ needs.settings.outputs.packages-directory }}
markdownlint:
name: Markdownlint
runs-on: ubuntu-latest
if: ${{ github.event_name != 'schedule' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Node.js
uses: ./.github/actions/npm
- name: Setup problem matcher
uses: xt0rted/markdownlint-problem-matcher@v3
- name: Execute
run: |
npm run markdownlint