diff --git a/.github/workflows/composer.yaml b/.github/workflows/composer.yaml index b3daa48..1c35656 100644 --- a/.github/workflows/composer.yaml +++ b/.github/workflows/composer.yaml @@ -32,8 +32,7 @@ on: pull_request: paths: &paths - "composer.json" - - "composer.lock" - - "docker-compose.yml" + - "compose.yaml" push: branches: - main @@ -62,8 +61,17 @@ jobs: run: | docker network create frontend - - run: | + - &composer_install + name: Composer install + run: | + # Create a temporary composer file to install https://github.com/mglaman/composer-drupal-lenient before the real install needs it. + docker compose run --rm --env COMPOSER=composer.lenient.json phpfpm composer init --no-interaction + docker compose run --rm --env COMPOSER=composer.lenient.json phpfpm composer config --no-plugins allow-plugins.mglaman/composer-drupal-lenient true + docker compose run --rm --env COMPOSER=composer.lenient.json phpfpm composer require mglaman/composer-drupal-lenient + docker compose run --rm --env COMPOSER=composer.lenient.json phpfpm rm composer.lenient.* docker compose run --rm phpfpm composer install + + - run: | docker compose run --rm phpfpm composer normalize --dry-run composer-audit: @@ -75,5 +83,7 @@ jobs: run: | docker network create frontend + - *composer_install + - run: | docker compose run --rm phpfpm composer audit diff --git a/.github/workflows/php.yaml b/.github/workflows/php.yaml index 5084749..3053c97 100644 --- a/.github/workflows/php.yaml +++ b/.github/workflows/php.yaml @@ -41,8 +41,7 @@ on: paths: &paths - "**/*.php" - "composer.json" - - "composer.lock" - - "docker-compose.yml" + - "compose.yaml" push: branches: - main @@ -60,6 +59,15 @@ jobs: run: | docker network create frontend - - run: | + - &composer_install + name: Composer install + run: | + # Create a temporary composer file to install https://github.com/mglaman/composer-drupal-lenient before the real install needs it. + docker compose run --rm --env COMPOSER=composer.lenient.json phpfpm composer init --no-interaction + docker compose run --rm --env COMPOSER=composer.lenient.json phpfpm composer config --no-plugins allow-plugins.mglaman/composer-drupal-lenient true + docker compose run --rm --env COMPOSER=composer.lenient.json phpfpm composer require mglaman/composer-drupal-lenient + docker compose run --rm --env COMPOSER=composer.lenient.json phpfpm rm composer.lenient.* docker compose run --rm phpfpm composer install + + - run: | docker compose run --rm phpfpm vendor/bin/phpcs diff --git a/.github/workflows/twig.yaml b/.github/workflows/twig.yaml index 26ba26e..b7395de 100644 --- a/.github/workflows/twig.yaml +++ b/.github/workflows/twig.yaml @@ -31,8 +31,7 @@ on: paths: &paths - "**/*.twig" - "composer.json" - - "composer.lock" - - "docker-compose.yml" + - "compose.yaml" push: branches: - main @@ -50,6 +49,15 @@ jobs: run: | docker network create frontend - - run: | + - &composer_install + name: Composer install + run: | + # Create a temporary composer file to install https://github.com/mglaman/composer-drupal-lenient before the real install needs it. + docker compose run --rm --env COMPOSER=composer.lenient.json phpfpm composer init --no-interaction + docker compose run --rm --env COMPOSER=composer.lenient.json phpfpm composer config --no-plugins allow-plugins.mglaman/composer-drupal-lenient true + docker compose run --rm --env COMPOSER=composer.lenient.json phpfpm composer require mglaman/composer-drupal-lenient + docker compose run --rm --env COMPOSER=composer.lenient.json phpfpm rm composer.lenient.* docker compose run --rm phpfpm composer install + + - run: | docker compose run --rm phpfpm vendor/bin/twig-cs-fixer lint diff --git a/Taskfile.yml b/Taskfile.yml index 4d49b3b..36930ba 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -104,12 +104,8 @@ tasks: test: cmds: - - docker compose run --env PHP_XDEBUG_MODE --env PHP_XDEBUG_WITH_REQUEST - --env PHP_IDE_CONFIG --rm phpfpm vendor/bin/phpunit {{.CLI_ARGS}} + - docker compose run --env PHP_XDEBUG_MODE --env PHP_XDEBUG_WITH_REQUEST --env PHP_IDE_CONFIG --rm phpfpm vendor/bin/phpunit {{.CLI_ARGS}} xdebug:test: cmds: - - PHP_XDEBUG_MODE=debug PHP_XDEBUG_WITH_REQUEST=yes - PHP_IDE_CONFIG=serverName=localhost docker compose run --env - PHP_XDEBUG_MODE --env PHP_XDEBUG_WITH_REQUEST --env PHP_IDE_CONFIG --rm - phpfpm vendor/bin/phpunit {{.CLI_ARGS}} + - PHP_XDEBUG_MODE=debug PHP_XDEBUG_WITH_REQUEST=yes PHP_IDE_CONFIG=serverName=localhost docker compose run --env PHP_XDEBUG_MODE --env PHP_XDEBUG_WITH_REQUEST --env PHP_IDE_CONFIG --rm phpfpm vendor/bin/phpunit {{.CLI_ARGS}} diff --git a/composer.json b/composer.json index d7fdfec..3c18ed1 100644 --- a/composer.json +++ b/composer.json @@ -17,17 +17,29 @@ "drupal/system_stream_wrapper": "^2.1", "drush/drush": "^12 || ^13", "itk-dev/serviceplatformen": "^1.9", - "os2forms/os2forms": "^5.0" + "os2forms/os2forms": "dev-feature/add-first-middle-and-last-name-nemid-elements as 5.1.0", + "os2web/os2web_datalookup": "dev-feature/fetch-first-middle-and-last-name as 3.1.0" }, "require-dev": { "drupal/coder": "^8.3", "ergebnis/composer-normalize": "^2.50", + "mglaman/composer-drupal-lenient": "^1.0", "mglaman/phpstan-drupal": "^2.0", "phpstan/extension-installer": "^1.4", "phpunit/phpunit": "^9.6", "vincentlanglet/twig-cs-fixer": "^3.13" }, "repositories": [ + { + "name": "os2web/os2web_datalookup", + "type": "vcs", + "url": "https://github.com/itk-dev/os2web_datalookup" + }, + { + "name": "os2forms/os2forms", + "type": "vcs", + "url": "https://github.com/itk-dev/os2forms" + }, { "type": "composer", "url": "https://packages.drupal.org/8" @@ -45,12 +57,13 @@ "allow-plugins": { "cweagans/composer-patches": true, "dealerdirect/phpcodesniffer-composer-installer": true, + "drupal/core-composer-scaffold": false, "ergebnis/composer-normalize": true, "mglaman/composer-drupal-lenient": true, "phpstan/extension-installer": true, "simplesamlphp/composer-module-installer": false, "simplesamlphp/composer-xmlprovider-installer": false, - "zaporylie/composer-drupal-optimizations": true + "zaporylie/composer-drupal-optimizations": false } }, "extra": { diff --git a/src/Drush/Commands/ValidateXmlCommand.php b/src/Drush/Commands/ValidateXmlCommand.php index 38108d0..a26bce9 100644 --- a/src/Drush/Commands/ValidateXmlCommand.php +++ b/src/Drush/Commands/ValidateXmlCommand.php @@ -4,7 +4,6 @@ namespace Drupal\os2forms_fordelingskomponent\Drush\Commands; -use Composer\Console\Input\InputOption; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Url; use Drupal\os2forms_fordelingskomponent\Helper\FordelingskomponentHelper; @@ -18,6 +17,7 @@ use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; diff --git a/src/Helper/FordelingskomponentHelper.php b/src/Helper/FordelingskomponentHelper.php index d5c4ffc..4897548 100644 --- a/src/Helper/FordelingskomponentHelper.php +++ b/src/Helper/FordelingskomponentHelper.php @@ -507,7 +507,7 @@ public function checkFilesDelivered( } catch (\Exception $exception) { $this->logger->warning('Error checking file %filename: %message', $context + [ - '%filename' => $filename ?? NULL, + '%filename' => $filename, '%message' => $exception->getMessage(), 'exception' => $exception, ]); diff --git a/src/Helper/WebformHelperSF2900.php b/src/Helper/WebformHelperSF2900.php index 787d915..283a108 100644 --- a/src/Helper/WebformHelperSF2900.php +++ b/src/Helper/WebformHelperSF2900.php @@ -127,7 +127,13 @@ public function renderPreview(WebformHandlerSF2900 $handler, WebformSubmissionIn $distributionObject = NULL; $xml = new XmlRenderResult( template: '', - context: [], + context: [ + 'submission' => [], + 'files' => [], + 'handler' => [ + 'settings' => [], + ], + ], rendered: NULL, exception: NULL, ); diff --git a/src/Helper/XmlHelper.php b/src/Helper/XmlHelper.php index 0e2f9b1..adc0ee8 100644 --- a/src/Helper/XmlHelper.php +++ b/src/Helper/XmlHelper.php @@ -75,8 +75,16 @@ public function render(string $template, array $context, bool $validateXml = TRU /** * Get render context. + * + * @return array { + * submission: array, + * files: array, + * handler: array{ + * settings: array + * } + * } */ - public function getRenderContext(HandlerSettings $handlerSettings, WebformSubmissionInterface $submission, array $files) { + public function getRenderContext(HandlerSettings $handlerSettings, WebformSubmissionInterface $submission, array $files): array { return [ 'submission' => $submission->toArray(TRUE), 'files' => $files, diff --git a/src/Model/XmlRenderResult.php b/src/Model/XmlRenderResult.php index c9b44d6..096beb5 100644 --- a/src/Model/XmlRenderResult.php +++ b/src/Model/XmlRenderResult.php @@ -18,9 +18,11 @@ public function __construct( * The context. * * @var array{ - * submission: array, + * submission: array|WebformSubmissionInterface|null, * files: array, - * handler: array, + * handler: array{ + * settings: array, + * }, * } */ public array $context, diff --git a/src/Os2formsFordelingskomponentTwigExtension.php b/src/Os2formsFordelingskomponentTwigExtension.php index 5892f83..e678d51 100644 --- a/src/Os2formsFordelingskomponentTwigExtension.php +++ b/src/Os2formsFordelingskomponentTwigExtension.php @@ -15,6 +15,7 @@ final class Os2formsFordelingskomponentTwigExtension extends AbstractExtension { /** * {@inheritdoc} */ + #[\Override] public function getFunctions(): array { $functions[] = new TwigFunction( 'os2forms_fordelingskomponent_intval',