1
0
Fork 0
mirror of https://github.com/archtechx/laravel-seo.git synced 2026-05-06 09:44:03 +00:00

Intervention Image v3 support (#45)

* fix: type error to assign the drie for image manager class

* fix: update package names and handle Intervention Image versioning in favicon generation

* fix: update intervention/image version constraint in composer.json

* cleanup, run CI tests with both intervention v2 and v3

* ci: composer require --dev

* phpstan fixes

---------

Co-authored-by: Samuel Štancl <samuel@archte.ch>
This commit is contained in:
Al Amin Ahamed 2026-03-31 07:48:26 +06:00 committed by GitHub
parent f79d417145
commit 713ecea0d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 38 additions and 17 deletions

View file

@ -7,11 +7,12 @@ on:
jobs:
pest:
name: Tests (Pest) L${{ matrix.laravel }}
name: Tests (Pest) L${{ matrix.laravel }} I${{ matrix.intervention }}
runs-on: ubuntu-latest
strategy:
matrix:
laravel: [10, 11, 12, 13]
intervention: [2, 3]
steps:
- uses: actions/checkout@v2
@ -20,7 +21,9 @@ jobs:
with:
php-version: 8.3
- name: Install composer dependencies
run: composer require "laravel/framework:^${{matrix.laravel}}.0"
run: |
composer require --dev "laravel/framework:^${{matrix.laravel}}.0"
composer require --dev "intervention/image:^${{matrix.intervention}}.0"
- name: Run tests
run: vendor/bin/pest

View file

@ -29,10 +29,10 @@
},
"require-dev": {
"orchestra/testbench": ">=8.0",
"nunomaduro/larastan": ">=2.4",
"larastan/larastan": ">=2.4",
"pestphp/pest": ">=2.0",
"pestphp/pest-plugin-laravel": ">=2.0",
"intervention/image": "^2.7"
"intervention/image": "^3.0"
},
"extra": {
"laravel": {

View file

@ -1,5 +1,5 @@
includes:
- ./vendor/nunomaduro/larastan/extension.neon
- ./vendor/larastan/larastan/extension.neon
parameters:
paths:

View file

@ -37,22 +37,40 @@ class GenerateFaviconsCommand extends Command
return self::FAILURE;
}
// GD driver doesn't support .ico, that's why we use ImageMagick.
$manager = new ImageManager(['driver' => 'imagick']);
// Check Intervention Image version
$interventionV3 = interface_exists('\Intervention\Image\Interfaces\DriverInterface');
if ($interventionV3) {
// v3.x implementation
$manager = new ImageManager(
new \Intervention\Image\Drivers\Imagick\Driver()
);
$this->comment('Generating ico...');
$image = $manager->read($path);
$image->resize(32, 32);
$image->save(public_path('favicon.ico'));
$this->comment('Generating png...');
$image = $manager->read($path);
$image->resize(32, 32);
$image->save(public_path('favicon.png'));
} else {
// v2.x implementation
$manager = new ImageManager(['driver' => 'imagick']); // @phpstan-ignore argument.type
$this->comment('Generating ico...');
$manager
->make($path)
->make($path) // @phpstan-ignore method.notFound
->resize(32, 32)
->save(public_path('favicon.ico'));
$this->comment('Generating png...');
$manager
->make($path)
->make($path) // @phpstan-ignore method.notFound
->resize(32, 32)
->save(public_path('favicon.png'));
}
$this->info('All favicons have been generated!');