From 80631930a6ca7b64d96a89de61c8b63f302161a8 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Tue, 4 Aug 2026 05:09:04 +0900 Subject: 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 --- .../Composer/Installer/InstallationManager.php | 137 +++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 crates/shirabe-php-rpc/php/stubs/Composer/Installer/InstallationManager.php (limited to 'crates/shirabe-php-rpc/php/stubs/Composer/Installer/InstallationManager.php') diff --git a/crates/shirabe-php-rpc/php/stubs/Composer/Installer/InstallationManager.php b/crates/shirabe-php-rpc/php/stubs/Composer/Installer/InstallationManager.php new file mode 100644 index 00000000..35682561 --- /dev/null +++ b/crates/shirabe-php-rpc/php/stubs/Composer/Installer/InstallationManager.php @@ -0,0 +1,137 @@ +__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 reset(): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'reset', []); + } + + public function addInstaller(InstallerInterface $installer): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'addInstaller', [$installer]); + } + + public function removeInstaller(InstallerInterface $installer): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'removeInstaller', [$installer]); + } + + public function disablePlugins(): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'disablePlugins', []); + } + + public function getInstaller(string $type): InstallerInterface + { + return \ShirabeRpcRuntime::callRust($this->__rhandle, 'getInstaller', [$type]); + } + + public function isPackageInstalled(InstalledRepositoryInterface $repo, PackageInterface $package): bool + { + return \ShirabeRpcRuntime::callRust($this->__rhandle, 'isPackageInstalled', [$repo, $package]); + } + + public function ensureBinariesPresence(PackageInterface $package): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'ensureBinariesPresence', [$package]); + } + + public function execute(InstalledRepositoryInterface $repo, array $operations, bool $devMode = true, bool $runScripts = true, bool $downloadOnly = false): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'execute', [$repo, $operations, $devMode, $runScripts, $downloadOnly]); + } + + public function download(PackageInterface $package): ?PromiseInterface + { + return \ShirabeRpcRuntime::callRust($this->__rhandle, 'download', [$package]); + } + + public function install(InstalledRepositoryInterface $repo, InstallOperation $operation): ?PromiseInterface + { + return \ShirabeRpcRuntime::callRust($this->__rhandle, 'install', [$repo, $operation]); + } + + public function update(InstalledRepositoryInterface $repo, UpdateOperation $operation): ?PromiseInterface + { + return \ShirabeRpcRuntime::callRust($this->__rhandle, 'update', [$repo, $operation]); + } + + public function uninstall(InstalledRepositoryInterface $repo, UninstallOperation $operation): ?PromiseInterface + { + return \ShirabeRpcRuntime::callRust($this->__rhandle, 'uninstall', [$repo, $operation]); + } + + public function markAliasInstalled(InstalledRepositoryInterface $repo, MarkAliasInstalledOperation $operation): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'markAliasInstalled', [$repo, $operation]); + } + + public function markAliasUninstalled(InstalledRepositoryInterface $repo, MarkAliasUninstalledOperation $operation): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'markAliasUninstalled', [$repo, $operation]); + } + + public function getInstallPath(PackageInterface $package): ?string + { + return \ShirabeRpcRuntime::callRust($this->__rhandle, 'getInstallPath', [$package]); + } + + public function setOutputProgress(bool $outputProgress): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'setOutputProgress', [$outputProgress]); + } + + public function notifyInstalls(IOInterface $io): void + { + \ShirabeRpcRuntime::callRust($this->__rhandle, 'notifyInstalls', [$io]); + } +} -- cgit v1.3.1