function action_uninstall($eventData)
{
    global $gLocale, $gLocale, $wuiPage, $gStatus;
    $tempApplication = new \Innomatic\Application\Application(\Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getDataAccess(), $eventData['appid']);
    if (!$tempApplication->uninstall()) {
        $unmetDeps = $tempApplication->getLastActionUnmetDeps();
        while (list($key, $val) = each($unmetDeps)) {
            $unmetDepsStr .= ' ' . $val;
        }
        $gStatus = $gLocale->getStr('removeunmetdeps_status') . $unmetDepsStr;
    } else {
        $gStatus = $gLocale->getStr('moduninstalled_status');
    }
}
 protected function undeployApplication(PackageInterface $package)
 {
     // Add vendor autoloads to access Innomatic Legacy Kernel bridge
     $vendorDir = $this->composer->getConfig()->get('vendor-dir');
     require $vendorDir . '/autoload.php';
     $appName = $package->getName();
     $appName = substr($appName, strpos($appName, '/') + 1);
     $legacyKernel = new Kernel();
     $result = $legacyKernel->runCallback(function () use($appName) {
         $appId = \Innomatic\Application\Application::getAppIdFromName($appName);
         $app = new \Innomatic\Application\Application(InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getDataAccess(), $appId);
         return $app->uninstall();
         /*
          * Due to different handling of dependencies uninstall order
          * in Composer, we ignore applications that cannot be
          * uninstalled.
          */
     });
     if (!$result) {
         $this->io->write("<error>Application {$appName} must be manually uninstalled from Innomatic due to reversed dependencies</error>");
     }
 }
     $script->cleanExit();
     break;
 case 'deploy':
     $app = new \Innomatic\Application\Application(InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getDataAccess());
     if ((is_dir($argv[2]) or file_exists($argv[2])) and $app->install($argv[2])) {
         print "Application {$app->appname} deployed\n";
         $script->cleanExit();
     } else {
         print "Application not deployed\n";
         $script->cleanExit(1);
     }
     break;
 case 'undeploy':
     $appid = \Innomatic\Application\Application::getAppIdFromName($argv[2]);
     $app = new \Innomatic\Application\Application(InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getDataAccess(), $appid);
     if ($app->uninstall()) {
         print "Application {$argv['2']} undeployed\n";
         $script->cleanExit();
     } else {
         print "Application {$argv['2']} not undeployed\n";
         $script->cleanExit(1);
     }
     break;
 case 'update':
     $appCentral = new \Innomatic\Application\AppCentralHelper();
     $appCentral->updateApplicationsList(function ($serverId, $serverName, $repoId, $repoData) {
         print 'Server ' . $serverName . ' - Repository ' . $repoData['name'] . '... ';
     }, function ($result) {
         print 'done' . PHP_EOL;
     });
     print "Applications list updated\n";