diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-04 05:09:04 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-04 05:43:32 +0900 |
| commit | 80631930a6ca7b64d96a89de61c8b63f302161a8 (patch) | |
| tree | dc5acf4a8dbe74b576ec7826206defa0e3f8fba1 /crates/shirabe-php-rpc/php/stubs/Composer/Repository/RepositoryManager.php | |
| parent | 850b67c048bbf80d9739520d950f4dd1ed4190a5 (diff) | |
| download | php-shirabe-80631930a6ca7b64d96a89de61c8b63f302161a8.tar.gz php-shirabe-80631930a6ca7b64d96a89de61c8b63f302161a8.tar.zst php-shirabe-80631930a6ca7b64d96a89de61c8b63f302161a8.zip | |
feat(plugin): generate proxy stubs for the package and repository graph
Emit the eleven stubs a subscriber plugin's object-graph calls reach
(BasePackage through RootPackage, the installed-repository hierarchy,
RepositoryManager, InstallationManager). The generator learns the member
kinds these classes need: builtin interfaces contribute no closure entries,
public static properties are materialized, public instance properties
forward through __get/__set, __toString forwards like a plain method,
__clone throws (proxy clone semantics are still an open design question),
and a subclass stub may add interfaces to its inherited surface.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-php-rpc/php/stubs/Composer/Repository/RepositoryManager.php')
| -rw-r--r-- | crates/shirabe-php-rpc/php/stubs/Composer/Repository/RepositoryManager.php | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/crates/shirabe-php-rpc/php/stubs/Composer/Repository/RepositoryManager.php b/crates/shirabe-php-rpc/php/stubs/Composer/Repository/RepositoryManager.php new file mode 100644 index 00000000..252bab4d --- /dev/null +++ b/crates/shirabe-php-rpc/php/stubs/Composer/Repository/RepositoryManager.php @@ -0,0 +1,89 @@ +<?php + +// Generated by scripts/plugin-stub-generator; do not edit by hand. +// Proxy stub for Composer\Repository\RepositoryManager: the public surface forwards to the Rust-side entity over RPC. + +namespace Composer\Repository; + +use Composer\Package\PackageInterface; + +class RepositoryManager implements \ShirabeRustStub +{ + /** @var int */ + protected $__rhandle; + /** @var int */ + protected $__epoch; + + public function __construct(int $rhandle = 0, int $epoch = 0) + { + if (func_num_args() < 2) { + // Constructing the class from plugin code (a common idiom for e.g. `new BufferIO()`) + // is an open question of the plugin design; only proxy instantiation passes a + // Rust handle. Fail with a diagnosable message instead of an ArgumentCountError. + throw new \RuntimeException( + 'Shirabe does not support constructing ' . static::class . ' inside the plugin process yet' + ); + } + $this->__rhandle = $rhandle; + $this->__epoch = $epoch; + } + + public function __destruct() + { + \ShirabeRustObjectRegistry::release($this->__rhandle); + } + + public function __shirabeRustHandleDescriptor(): array + { + return [ + '__rhandle' => $this->__rhandle, + '__class' => static::class, + '__epoch' => $this->__epoch, + ]; + } + + public function findPackage(string $name, $constraint): ?PackageInterface + { + return \ShirabeRpcRuntime::callRust($this->__rhandle, 'findPackage', [$name, $constraint]); + } + + public function findPackages(string $name, $constraint): array + { + return \ShirabeRpcRuntime::callRust($this->__rhandle, 'findPackages', [$name, $constraint]); + } + + public function addRepository(RepositoryInterface $repository): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'addRepository', [$repository]); + } + + public function prependRepository(RepositoryInterface $repository): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'prependRepository', [$repository]); + } + + public function createRepository(string $type, array $config, ?string $name = null): RepositoryInterface + { + return \ShirabeRpcRuntime::callRust($this->__rhandle, 'createRepository', [$type, $config, $name]); + } + + public function setRepositoryClass(string $type, $class): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'setRepositoryClass', [$type, $class]); + } + + public function getRepositories(): array + { + return \ShirabeRpcRuntime::callRust($this->__rhandle, 'getRepositories', []); + } + + public function setLocalRepository(InstalledRepositoryInterface $repository): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'setLocalRepository', [$repository]); + } + + public function getLocalRepository(): InstalledRepositoryInterface + { + return \ShirabeRpcRuntime::callRust($this->__rhandle, 'getLocalRepository', []); + } +} |
