Skip to content

Commit 5fa0469

Browse files
authored
Merge pull request #10 from eclipxe13/maintenance
Versión 0.3.0
2 parents 69c6830 + aee2273 commit 5fa0469

27 files changed

Lines changed: 523 additions & 310 deletions

.gitattributes

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22
* text=auto
33

44
# Do not put this files on a distribution package (by .gitignore)
5-
/tools/ export-ignore
6-
/vendor/ export-ignore
7-
/composer.lock export-ignore
8-
.phpunit.result.cache export-ignore
5+
/tools/ export-ignore
6+
/vendor/ export-ignore
7+
/composer.lock export-ignore
98

109
# Do not put this files on a distribution package
11-
/.phive/ export-ignore
12-
/.github/ export-ignore
13-
/build/ export-ignore
14-
/tests/ export-ignore
15-
/.gitattributes export-ignore
16-
/.gitignore export-ignore
17-
/.php-cs-fixer.dist.php export-ignore
18-
/.scrutinizer.yml export-ignore
19-
/phpcs.xml.dist export-ignore
20-
/phpunit.xml.dist export-ignore
10+
/.github/ export-ignore
11+
/.phive/ export-ignore
12+
/build/ export-ignore
13+
/tests/ export-ignore
14+
/.gitattributes export-ignore
15+
/.gitignore export-ignore
16+
/.php-cs-fixer.dist.php export-ignore
17+
/.scrutinizer.yml export-ignore
18+
/phpcs.xml.dist export-ignore
19+
/phpstan.neon.dist export-ignore
20+
/phpunit.xml.dist export-ignore

.github/CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# see https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners
2-
/.github/* @phpcfdi/core-mantainers
2+
/.github/* @phpcfdi/core-maintainers

.github/workflows/build.yml

Lines changed: 118 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,160 @@
11
name: build
22
on:
33
pull_request:
4-
branches:
5-
- main
4+
branches: [ "main" ]
65
push:
7-
branches:
8-
- main
6+
branches: [ "main" ]
97
paths:
108
- ".github/workflows/build.yml"
119
- "bin/**"
1210
- "src/**"
1311
- "tests/**"
1412
- "composer.json"
15-
- "*.dist"
13+
- "*.dist*"
1614
schedule:
1715
- cron: '0 16 * * 0' # sunday 16:00
1816

17+
# Actions
18+
# shivammathur/setup-php@v2 https://github.com/marketplace/actions/setup-php-action
19+
1920
jobs:
20-
build:
21-
name: PHP ${{ matrix.php-versions }}
21+
phpcs:
22+
name: Code Style (phpcs)
2223
runs-on: "ubuntu-latest"
23-
24-
strategy:
25-
matrix:
26-
php-versions: ['7.3', '7.4', '8.0']
27-
2824
steps:
29-
3025
- name: Checkout
3126
uses: actions/checkout@v2
27+
- name: Setup PHP
28+
uses: shivammathur/setup-php@v2
29+
with:
30+
php-version: '8.0'
31+
coverage: none
32+
tools: composer:v2, phpcs, cs2pr
33+
- name: phpcs
34+
run: phpcs -q --report=checkstyle | cs2pr
3235

33-
# see https://github.com/marketplace/actions/setup-php-action
36+
php-cs-fixer:
37+
name: Code Style (php-cs-fixer)
38+
runs-on: "ubuntu-latest"
39+
steps:
40+
- name: Checkout
41+
uses: actions/checkout@v2
3442
- name: Setup PHP
3543
uses: shivammathur/setup-php@v2
3644
with:
37-
php-version: ${{ matrix.php-versions }}
38-
extensions: dom, json
45+
php-version: '8.0'
3946
coverage: none
40-
tools: composer:v2, cs2pr, phive
41-
env:
42-
fail-fast: true
47+
tools: composer:v2, php-cs-fixer, cs2pr
48+
- name: php-cs-fixer
49+
run: php-cs-fixer fix --dry-run --format=checkstyle | cs2pr
4350

51+
phpstan:
52+
name: Code analysis (phpstan)
53+
runs-on: "ubuntu-latest"
54+
steps:
55+
- name: Checkout
56+
uses: actions/checkout@v2
57+
- name: Setup PHP
58+
uses: shivammathur/setup-php@v2
59+
with:
60+
php-version: '8.0'
61+
coverage: none
62+
tools: composer:v2, phpstan
4463
- name: Get composer cache directory
4564
id: composer-cache
4665
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
47-
48-
- name: Composer cache dependencies
66+
- name: Cache dependencies
4967
uses: actions/cache@v2
5068
with:
5169
path: ${{ steps.composer-cache.outputs.dir }}
5270
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
5371
restore-keys: ${{ runner.os }}-composer-
72+
- name: Install project dependencies
73+
run: composer upgrade --no-interaction --no-progress --prefer-dist
74+
- name: phpstan
75+
run: phpstan analyse --no-progress --verbose
5476

55-
- name: Phive cache dependencies
77+
check-current-max-occurs-paths:
78+
name: Check src/UnboundedOccursPaths.json file
79+
runs-on: "ubuntu-latest"
80+
steps:
81+
- name: Checkout
82+
uses: actions/checkout@v2
83+
- name: Setup PHP
84+
uses: shivammathur/setup-php@v2
85+
with:
86+
php-version: '8.0'
87+
coverage: none
88+
tools: composer:v2
89+
- name: Get composer cache directory
90+
id: composer-cache
91+
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
92+
- name: Cache dependencies
5693
uses: actions/cache@v2
5794
with:
58-
path: ~/.phive
59-
key: ${{ runner.os }}-phive-${{ hashFiles('**/.phive/phars.xml') }}
60-
restore-keys: ${{ runner.os }}-phive-
61-
95+
path: ${{ steps.composer-cache.outputs.dir }}
96+
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
97+
restore-keys: ${{ runner.os }}-composer-
6298
- name: Install project dependencies
6399
run: composer upgrade --no-interaction --no-progress --prefer-dist
64-
65-
- name: Install phive dependencies
66-
run: |
67-
phive install --force-accept-unsigned --trust-gpg-keys 0x4AA394086372C20A,0x31C7E470E2138192,0xE82B2FB314E9906E,0xCF1A108D0E7AE720,0xC5095986493B4AA0
68-
git checkout -- .phive/phars.xml
69-
70100
- name: Check src/UnboundedOccursPaths.json
71101
run: bash bin/check-current-max-occurs-paths.bash
72102

73-
- name: Code style (phpcs)
74-
run: tools/phpcs -q --report=checkstyle bin/ src/ tests/ | cs2pr
75-
76-
- name: Code style (php-cs-fixer)
77-
run: tools/php-cs-fixer fix --dry-run --format=checkstyle | cs2pr
78-
79-
- name: Tests (phpunit)
103+
tests:
104+
name: Tests on PHP ${{ matrix.php-versions }} (phpunit)
105+
runs-on: "ubuntu-latest"
106+
strategy:
107+
matrix:
108+
php-versions: ['7.3', '7.4', '8.0', '8.1']
109+
steps:
110+
- name: Checkout
111+
uses: actions/checkout@v2
112+
- name: Setup PHP
113+
uses: shivammathur/setup-php@v2
114+
with:
115+
php-version: ${{ matrix.php-versions }}
116+
coverage: none
117+
tools: composer:v2
118+
env:
119+
fail-fast: true
120+
- name: Get composer cache directory
121+
id: composer-cache
122+
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
123+
- name: Cache dependencies
124+
uses: actions/cache@v2
125+
with:
126+
path: ${{ steps.composer-cache.outputs.dir }}
127+
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
128+
restore-keys: ${{ runner.os }}-composer-
129+
- name: Install project dependencies
130+
run: composer upgrade --no-interaction --no-progress --prefer-dist
131+
- name: Tests
80132
run: vendor/bin/phpunit --testdox --verbose
81133

82-
- name: Code analysis (phpstan)
83-
run: tools/phpstan analyse --level max --no-progress --verbose bin/ src/ tests/
84-
85-
- name: Mutation testing (infection)
86-
run: phpdbg -qrr tools/infection --no-progress --no-interaction --show-mutations --logger-github
87-
continue-on-error: true
134+
infection:
135+
name: Mutation testing analysis (infection)
136+
runs-on: "ubuntu-latest"
137+
steps:
138+
- name: Checkout
139+
uses: actions/checkout@v2
140+
- name: Setup PHP
141+
uses: shivammathur/setup-php@v2
142+
with:
143+
php-version: '8.0'
144+
coverage: xdebug
145+
tools: composer:v2, infection
146+
- name: Get composer cache directory
147+
id: composer-cache
148+
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
149+
- name: Cache dependencies
150+
uses: actions/cache@v2
151+
with:
152+
path: ${{ steps.composer-cache.outputs.dir }}
153+
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
154+
restore-keys: ${{ runner.os }}-composer-
155+
- name: Install project dependencies
156+
run: composer upgrade --no-interaction --no-progress --prefer-dist
157+
- name: Create code coverage
158+
run: vendor/bin/phpunit --coverage-xml=build/coverage --coverage-clover=build/coverage/clover.xml --log-junit=build/coverage/junit.xml
159+
- name: infection
160+
run: infection --skip-initial-tests --coverage=build/coverage --no-progress --no-interaction --logger-github

.phive/phars.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<phive xmlns="https://phar.io/phive">
3-
<phar name="php-cs-fixer" version="^3.0" location="./tools/php-cs-fixer" copy="false"/>
4-
<phar name="phpcbf" version="^3.0" location="./tools/phpcbf" copy="false"/>
5-
<phar name="phpcs" version="^3.0" location="./tools/phpcs" copy="false"/>
6-
<phar name="phpstan" version="^0.12" location="./tools/phpstan" copy="false"/>
7-
<phar name="infection" version="^0.21.0" location="./tools/infection" copy="false"/>
3+
<phar name="php-cs-fixer" version="^3.7.0" location="./tools/php-cs-fixer" copy="false" installed="3.7.0"/>
4+
<phar name="phpcbf" version="^3.6.2" location="./tools/phpcbf" copy="false" installed="3.6.2"/>
5+
<phar name="phpcs" version="^3.6.2" location="./tools/phpcs" copy="false" installed="3.6.2"/>
6+
<phar name="phpstan" version="^1.4.10" location="./tools/phpstan" copy="false" installed="1.4.10"/>
7+
<phar name="infection" version="^0.26.6" location="./tools/infection" copy="false" installed="0.26.6"/>
88
</phive>

.php-cs-fixer.dist.php

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,50 @@
11
<?php
22

3+
/**
4+
* @noinspection PhpUndefinedClassInspection
5+
* @noinspection PhpUndefinedNamespaceInspection
6+
* @see https://cs.symfony.com/doc/ruleSets/
7+
* @see https://cs.symfony.com/doc/rules/
8+
*/
9+
310
declare(strict_types=1);
411

512
return (new PhpCsFixer\Config())
613
->setRiskyAllowed(true)
7-
->setCacheFile(__DIR__ . '/build/php_cs.cache')
14+
->setCacheFile(__DIR__ . '/build/php-cs-fixer.cache')
815
->setRules([
9-
'@PSR2' => true,
10-
'@PHP70Migration' => true,
11-
'@PHP70Migration:risky' => true,
12-
'@PHP71Migration' => true,
16+
'@PSR12' => true,
17+
'@PSR12:risky' => true,
1318
'@PHP71Migration:risky' => true,
1419
'@PHP73Migration' => true,
1520
// symfony
16-
'class_attributes_separation' => true,
21+
// 'class_attributes_separation' => true, // conflict with PSR12
1722
'whitespace_after_comma_in_array' => true,
1823
'no_empty_statement' => true,
1924
'no_extra_blank_lines' => true,
2025
'function_typehint_space' => true,
21-
'no_alias_functions' => true,
22-
'trailing_comma_in_multiline' => ['elements' => ['arrays', 'arguments']],
23-
'new_with_braces' => true,
24-
'no_blank_lines_after_class_opening' => true,
2526
'no_blank_lines_after_phpdoc' => true,
2627
'object_operator_without_whitespace' => true,
2728
'binary_operator_spaces' => true,
2829
'phpdoc_scalar' => true,
29-
'self_accessor' => true,
3030
'no_trailing_comma_in_singleline_array' => true,
3131
'single_quote' => true,
3232
'no_singleline_whitespace_before_semicolons' => true,
3333
'no_unused_imports' => true,
34-
'no_whitespace_in_blank_line' => true,
3534
'yoda_style' => ['equal' => true, 'identical' => true, 'less_and_greater' => null],
3635
'standardize_not_equals' => true,
37-
// contrib
3836
'concat_space' => ['spacing' => 'one'],
39-
'not_operator_with_successor_space' => true,
40-
'single_blank_line_before_namespace' => true,
4137
'linebreak_after_opening_tag' => true,
42-
'blank_line_after_opening_tag' => true,
43-
'ordered_imports' => true,
44-
'array_syntax' => ['syntax' => 'short'],
38+
// symfony:risky
39+
'no_alias_functions' => true,
40+
'self_accessor' => true,
41+
// contrib
42+
'not_operator_with_successor_space' => true,
4543
])
4644
->setFinder(
4745
PhpCsFixer\Finder::create()
4846
->in(__DIR__)
47+
->append([__FILE__])
4948
->exclude(['tools', 'vendor', 'build'])
5049
)
5150
;

CODE_OF_CONDUCT.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Código de Conducta convenido para Contribuyentes
1+
# Código de Conducta Convenido para Contribuyentes
22

33
## Nuestro compromiso
44

CONTRIBUTING.md

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Contribuciones
22

3-
Las contribuciones son bienvenidas. Aceptamos *Pull Requests* en [repositorio GitHub][homepage].
3+
Las contribuciones son bienvenidas. Aceptamos *Pull Requests* en el [repositorio GitHub][homepage].
44

55
Este proyecto se apega al siguiente [Código de Conducta][coc].
66
Al participar en este proyecto y en su comunidad, deberás seguir este código.
@@ -49,25 +49,19 @@ o la forma de desarrollarlas puede que no estén alineadas con el proyecto.
4949

5050
Considera las siguientes directrices:
5151

52-
* Usa una rama única que se desprenda de la rama principal.
52+
* Usa una rama única que se desprenda de la rama principal.
5353
No mezcles dos diferentes funcionalidades en una misma rama o *Pull Request*.
5454
* Describe claramente y en detalle los cambios que hiciste.
5555
* **Escribe pruebas** para la funcionalidad que deseas agregar.
56-
* **Asegúrate que las pruebas pasan** antes de enviar tu contribución.
57-
Usamos integración contínua donde se hace esta verificación, pero es mucho mejor si lo pruebas localmente.
56+
* **Asegúrate que las pruebas pasan** antes de enviar tu contribución.
57+
Usamos integración continua donde se hace esta verificación, pero es mucho mejor si lo pruebas localmente.
5858
* Intenta enviar una historia coherente, entenderemos cómo cambia el código si los *commits* tienen significado.
59-
* La documentación es parte del proyecto.
59+
* La documentación es parte del proyecto.
6060
Realiza los cambios en los archivos de ayuda para que reflejen los cambios en el código.
6161

6262
## Proceso de construcción
6363

6464
```shell
65-
# Instala phive, sigue las indicaciones seguras de https://phar.io/#Install o la forma insegura:
66-
wget https://phar.io/releases/phive.phar -O ~/.local/bin/phive
67-
68-
## Si no se han instalado las herramientas previamente
69-
phive install --force-accept-unsigned --trust-gpg-keys 0x4AA394086372C20A,0x31C7E470E2138192,0xE82B2FB314E9906E,0xCF1A108D0E7AE720,0xC5095986493B4AA0
70-
7165
# Actualiza tus dependencias
7266
composer update
7367
phive update
@@ -81,13 +75,23 @@ composer dev:fix-style
8175
# Ejecución de pruebas
8276
composer dev:test
8377

84-
# Ejecución todo en uno, corregir estilo, verificar estilo y correr pruebas
78+
# Ejecución todo en uno: corregir estilo, verificar estilo y correr pruebas
8579
composer dev:build
8680

8781
# Opcional: correr las pruebas de mutación
8882
composer dev:infection
8983
```
9084

85+
## Ejecutar GitHub Actions localmente
86+
87+
Puedes utilizar la herramienta [`act`](https://github.com/nektos/act) para ejecutar las GitHub Actions localmente.
88+
Según [`actions/setup-php-action`](https://github.com/marketplace/actions/setup-php-action#local-testing-setup)
89+
puedes ejecutar el siguiente comando para revisar los flujos de trabajo localmente:
90+
91+
```shell
92+
act -P ubuntu-latest=shivammathur/node:latest
93+
```
94+
9195
[phpCfdi]: https://github.com/phpcfdi/
9296
[project]: https://github.com/phpcfdi/cfdi-to-json
9397
[contributors]: https://github.com/phpcfdi/cfdi-to-json/graphs/contributors

0 commit comments

Comments
 (0)