name: Validate on: # Run on all pushes and on all pull requests. # Prevent the build from running when there are only irrelevant changes. push: paths-ignore: - '**.md' pull_request: paths-ignore: - '**.md' # Allow manually triggering the workflow. workflow_dispatch: jobs: checkxml: name: Check XML files runs-on: ubuntu-latest env: XMLLINT_INDENT: ' ' steps: - name: Checkout code uses: actions/checkout@v3 - name: Install xmllint run: | sudo apt-get update sudo apt-get install --no-install-recommends -y libxml2-utils - name: Retrieve XML Schema run: curl -O https://www.w3.org/2012/04/XMLSchema.xsd # Show XML violations inline in the file diff. # @link https://github.com/marketplace/actions/xmllint-problem-matcher - uses: korelstar/xmllint-problem-matcher@v1 # Validate the XML ruleset files. # @link http://xmlsoft.org/xmllint.html - name: Validate rulesets against schema run: xmllint --noout --schema phpcs.xsd ./src/Standards/*/ruleset.xml # Validate the XSD file. # @link http://xmlsoft.org/xmllint.html - name: Validate XSD against schema run: xmllint --noout --schema ./XMLSchema.xsd ./phpcs.xsd # Check the code-style consistency of the XML files. - name: Check XML code style run: | diff -B ./phpcs.xml.dist <(xmllint --format "./phpcs.xml.dist") diff -B ./src/Standards/Generic/ruleset.xml <(xmllint --format "./src/Standards/Generic/ruleset.xml") diff -B ./src/Standards/MySource/ruleset.xml <(xmllint --format "./src/Standards/MySource/ruleset.xml") diff -B ./src/Standards/PEAR/ruleset.xml <(xmllint --format "./src/Standards/PEAR/ruleset.xml") diff -B ./src/Standards/PSR1/ruleset.xml <(xmllint --format "./src/Standards/PSR1/ruleset.xml") diff -B ./src/Standards/PSR2/ruleset.xml <(xmllint --format "./src/Standards/PSR2/ruleset.xml") diff -B ./src/Standards/PSR12/ruleset.xml <(xmllint --format "./src/Standards/PSR12/ruleset.xml") diff -B ./src/Standards/Squiz/ruleset.xml <(xmllint --format "./src/Standards/Squiz/ruleset.xml") diff -B ./src/Standards/Zend/ruleset.xml <(xmllint --format "./src/Standards/Zend/ruleset.xml") pear: name: "PHP: 7.4 | PEAR package validation" runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: '7.4' coverage: none - name: Validate the PEAR package file contents run: php scripts/validate-pear-package.php - name: Validate the PEAR package run: pear package-validate package.xml