setDescription('Unregister a plugin.'); $this->setHelp('This command unregisters a plugin.'); $this->addArgument('pluginname', InputArgument::REQUIRED, 'name of the plugin'); } protected function execute(InputInterface $input, OutputInterface $output): int { $pluginname = $input->getArgument('pluginname'); $verbose = $input->getOption('verbose'); $pluginManager = \PluginManager::getInstance(); $plugin = $this->findPluginByName($pluginManager, $pluginname); if (null === $plugin) { $output->writeln('Could not find plugin of that name.'); return Command::FAILURE; } $pluginManager->unregisterPlugin($plugin['id']); // if there are any migrations, un-migrate $pluginpath = \Config::get()->PLUGINS_PATH . '/' . $plugin['path']; if (is_dir($pluginpath . '/migrations')) { $schemaVersion = new \DBSchemaVersion($plugin['name']); $migrator = new \Migrator($pluginpath . '/migrations', $schemaVersion, $verbose); $migrator->migrateTo(0); } $output->writeln('The plugin was unregistered successfully.'); return Command::SUCCESS; } }