diff --git a/composer.json b/composer.json index bf07592..ef6681f 100644 --- a/composer.json +++ b/composer.json @@ -4,12 +4,12 @@ "license": "MIT", "description": "在 imi 框架中集成 gRPC 服务开发、客户端调用及连接池", "require": { - "ext-swoole": ">=4.4.0", - "imiphp/imi-rpc": "2.*", + "imiphp/imi-rpc": "~2.0.0", "yurunsoft/yurun-http": "^4.0.0", "google/protobuf": "^3.10.0" }, - "require-dev": {}, + "require-dev": { + }, "autoload": { "psr-4": { "Imi\\Grpc\\": "src/grpc", @@ -23,7 +23,11 @@ "GPBMetadata\\": "example/grpc/GPBMetadata", "Imi\\Grpc\\Test\\": "tests/Grpc", "Imi\\Grpc\\Dev\\": "dev/" - } + }, + "files": [ + "../../../vendor/autoload.php", + "../../../dev/try-include-swoole.php" + ] }, "scripts": { "pre-install-cmd": "Imi\\Grpc\\Dev\\Dev::preUpdate", diff --git a/dev/Dev.php b/dev/Dev.php index c25ec5c..67f8e67 100644 --- a/dev/Dev.php +++ b/dev/Dev.php @@ -13,12 +13,13 @@ class Dev // @phpstan-ignore-next-line public static function preUpdate(Event $event): void { + $dir = \dirname(__DIR__); // @phpstan-ignore-next-line $package = $event->getComposer()->getPackage(); $requires = $package->getRequires(); foreach ($requires as $name => &$require) { - if ('imiphp/' !== substr($name, 0, 7)) + if ('imiphp/' !== substr($name, 0, 7) || !is_dir(\dirname($dir) . '/' . substr($name, 11))) { continue; } @@ -26,6 +27,18 @@ public static function preUpdate(Event $event): void $require = new Link($require->getSource(), $require->getTarget(), new Constraint('>', '0'), $require->getDescription()); } $package->setRequires($requires); + + $requires = $package->getDevRequires(); + foreach ($requires as $name => &$require) + { + if ('imiphp/' !== substr($name, 0, 7) || !is_dir(\dirname($dir) . '/' . substr($name, 11))) + { + continue; + } + // @phpstan-ignore-next-line + $require = new Link($require->getSource(), $require->getTarget(), new Constraint('>', '0'), $require->getDescription()); + } + $package->setDevRequires($requires); } // @phpstan-ignore-next-line @@ -35,15 +48,15 @@ public static function postUpdate(Event $event): void // @phpstan-ignore-next-line $package = $event->getComposer()->getPackage(); - $requires = $package->getRequires(); + $requires = array_merge($package->getRequires(), $package->getDevRequires()); foreach ($requires as $name => $require) { - if ('imiphp/' !== substr($name, 0, 7)) + $componentDir = \dirname($dir) . '/' . substr($name, 11); + if ('imiphp/' !== substr($name, 0, 7) || !is_dir($componentDir)) { continue; } - $componentDir = \dirname($dir) . '/' . substr($name, 11); $path = "{$dir}/vendor/{$name}"; $cmd = "rm -rf {$path} && ln -s -f {$componentDir} {$path}"; echo '[cmd] ', $cmd, \PHP_EOL; diff --git a/example/bin/imi b/example/bin/imi index 2aa7ef6..4c853b3 100755 --- a/example/bin/imi +++ b/example/bin/imi @@ -1,7 +1,7 @@ #!/usr/bin/env php