public function onPostInstallCommand(ScriptEvent $event)
    {
        $config = $event->getComposer()->getConfig();
        $filesystem = new Filesystem();
        $vendor_path = $filesystem->normalizePath(realpath($config->get('vendor-dir')));
        $cake_dir = $filesystem->normalizePath($vendor_path . '/cakephp/cakephp');
        $root_dir = $filesystem->normalizePath(realpath(""));
        $app_dir = $filesystem->normalizePath($root_dir . '/app');
        if (!is_dir($app_dir)) {
            $this->copyRecursive($filesystem->normalizePath($cake_dir . '/app'), $app_dir);
            $index_path = $filesystem->normalizePath($app_dir . '/webroot/index.php');
            $index = str_replace('define(\'CAKE_CORE_INCLUDE_PATH\', ROOT);', 'define(\'CAKE_CORE_INCLUDE_PATH\', ROOT . \'vendor\' . DS . \'cakephp\' . DS . \'cakephp\');', file_get_contents($index_path));
            file_put_contents($index_path, $index);
            $loader_of_old_php_path = $filesystem->normalizePath($vendor_path . '/atomita/loader-of-less-than-php5.3-plugin');
            if (file_exists($loader_of_old_php_path)) {
                $loader = <<<EOD
// @generated by atomita/cakephp1-setup-plugin
include(ROOT . DS . '{$config->get('vendor-dir')}' . DS . 'autoload.php');
// @end generated
EOD;
                $config_path = $filesystem->normalizePath($app_dir . '/config/core.php');
                $config = file_get_contents($config_path);
                if (false === strpos($config, $loader)) {
                    file_put_contents($config_path, $config . PHP_EOL . PHP_EOL . $loader);
                }
            }
        }
    }
 /**
  * @return int
  */
 public function install()
 {
     $io = $this->event->getIO();
     $composer = $this->event->getComposer();
     $repository = new PhantomJSVersionRepository($io, $composer);
     $versions = $repository->getVersions();
     if (!count($versions)) {
         $io->write('<error>Could not found any version.</error>');
         return 1;
     }
     $binDir = $composer->getConfig()->get('bin-dir');
     is_dir($binDir) ?: mkdir($binDir, 0755, true);
     $binDir = realpath($binDir);
     $vendorDir = $composer->getConfig()->get('vendor-dir') . '/sgc-fireball/phantomjs';
     is_dir($vendorDir) ?: mkdir($vendorDir, 0755, true);
     $vendorDir = realpath($vendorDir);
     $downloader = new PhantomJSDownloader($io, $composer);
     foreach ($versions as $version) {
         try {
             $package = $downloader->createComposerPackage($version, $vendorDir);
             if ($downloader->download($package)) {
                 copy($vendorDir . '/bin/phantomjs', $binDir . '/phantomjs');
                 chmod($binDir . '/phantomjs', 0755);
                 return 0;
             }
         } catch (\Exception $e) {
         }
     }
     $io->write(sprintf('<error>Could not download %s.</error>', $package->getDistUrl()));
     return 2;
 }
Exemplo n.º 3
0
 public static function migrateSettingsFile(Event $event = null)
 {
     if ($event !== null) {
         $event->getIO()->write("Migrating old setting file...");
     }
     if ($event) {
         $root_dir = realpath('');
     } else {
         $root_dir = realpath('../../');
     }
     if (file_exists($root_dir . '/app/config/parameters.yml')) {
         return false;
     }
     if (file_exists($root_dir . '/' . self::SETTINGS_FILE)) {
         $tmp_settings = file_get_contents($root_dir . '/' . self::SETTINGS_FILE);
         if (strpos($tmp_settings, '_DB_SERVER_') !== false) {
             $tmp_settings = preg_replace('/(\'|")\\_/', '$1_LEGACY_', $tmp_settings);
             file_put_contents($root_dir . '/' . self::SETTINGS_FILE, $tmp_settings);
             include $root_dir . '/' . self::SETTINGS_FILE;
             $factory = new RandomLib\Factory();
             $generator = $factory->getLowStrengthGenerator();
             $secret = $generator->generateString(56);
             $default_parameters = Yaml::parse($root_dir . '/app/config/parameters.yml.dist');
             $parameters = array('parameters' => array('database_host' => _LEGACY_DB_SERVER_, 'database_port' => '~', 'database_user' => _LEGACY_DB_USER_, 'database_password' => _LEGACY_DB_PASSWD_, 'database_name' => _LEGACY_DB_NAME_, 'database_prefix' => _LEGACY_DB_PREFIX_, 'database_engine' => _LEGACY_MYSQL_ENGINE_, 'cookie_key' => _LEGACY_COOKIE_KEY_, 'cookie_iv' => _LEGACY_COOKIE_IV_, 'ps_caching' => _LEGACY_PS_CACHING_SYSTEM_, 'ps_cache_enable' => _LEGACY_PS_CACHE_ENABLED_, 'ps_creation_date' => _LEGACY_PS_CREATION_DATE_, 'secret' => $secret, 'mailer_transport' => 'smtp', 'mailer_host' => '127.0.0.1', 'mailer_user' => '~', 'mailer_password' => '~') + $default_parameters['parameters']);
             if (file_put_contents($root_dir . '/app/config/parameters.yml', Yaml::dump($parameters))) {
                 $settings_content = "<?php\n";
                 $settings_content .= "//@deprecated 1.7";
                 file_put_contents($root_dir . '/' . self::SETTINGS_FILE, $settings_content);
             }
         }
     }
     if ($event !== null) {
         $event->getIO()->write("Finished...");
     }
 }
 /**
  * Update the stored database.
  *
  * @since 0.1.0
  *
  * @param Event $event The event that has called the update method.
  */
 public static function update(Event $event)
 {
     $dbFilename = PHPReleases::getLocation();
     self::maybeCreateDBFolder(dirname($dbFilename));
     $io = $event->getIO();
     $io->write('Fetching change logs from official PHP website...', false);
     $io->write(' PHP5...', false);
     $php5 = self::downloadFile(self::PHP_5_RELEASES);
     $io->write(' PHP7...', false);
     $php7 = self::downloadFile(self::PHP_7_RELEASES);
     $io->write(' done!', true);
     $releases = array();
     $io->write('Parsing change logs to extract versions...', false);
     $io->write(' PHP5...', false);
     $php5Releases = self::parseReleases($php5);
     $io->write('(' . count($php5Releases) . ' releases)', false);
     $releases = array_merge($releases, $php5Releases);
     $io->write(' PHP7...', false);
     $php7Releases = self::parseReleases($php7);
     $io->write('(' . count($php7Releases) . ' releases)', false);
     $releases = array_merge($releases, $php7Releases);
     $io->write(' done!', true);
     ksort($releases, SORT_NATURAL);
     self::generateConfig($releases, $dbFilename);
     $io->write('The PHP Releases database has been updated.', true);
 }
 /**
  * @param Event $event
  */
 public static function checkForSecurityIssues(Event $event)
 {
     $extra = $event->getComposer()->getPackage()->getExtra();
     $config = isset($extra['rolebi-dependencies-security-checker']) ? $extra['rolebi-dependencies-security-checker'] : array();
     if (!is_array($config)) {
         throw new \InvalidArgumentException('The extra.rolebi-dependencies-security-checker setting must be an array.');
     }
     $config = ConfigHandler::processConfig($config);
     $io = $event->getIO();
     $io->write("\n" . '<info>Checking your dependencies for known vulnerabilities using your composer.lock</info>');
     $io->write('<comment>This checker can only detect vulnerabilities that are referenced in the SensioLabs ' . 'security advisories database.</comment>' . "\n");
     try {
         $vulnerabilities = static::getVulnerabilities(static::getComposerFile(), $config['ignored-packages']);
     } catch (ServiceUnavailableException $exception) {
         if ($config['error-on-service-unavailable']) {
             throw $exception;
         } else {
             $io->write("\n" . '  <error>' . $exception->getMessage() . '</error>');
             return;
         }
     }
     $errorCount = count($vulnerabilities);
     if ($errorCount) {
         $io->write("\n" . '  <error>' . $errorCount . ' vulnerability(ies) found!</error>');
         static::dumpVulnerabilities($io, $vulnerabilities);
         if ($config['error-on-vulnerabilities']) {
             $exception = new UnsafeDependenciesException('At least one of your dependencies contains known vulnerability(ies)');
             throw $exception->setVulnerabilities($vulnerabilities);
         }
     }
 }
Exemplo n.º 6
0
 /**
  * @param Event $event
  *
  * @throws \InvalidArgumentException
  * @throws \RuntimeException
  * @throws \Symfony\Component\Filesystem\Exception\IOException
  *
  * @api
  *
  * @quality:method [C]
  */
 public static function publish(Event $event)
 {
     $composer = $event->getComposer();
     $extras = $composer->getPackage()->getExtra();
     if (!isset($extras['admin-lte'])) {
         throw new \InvalidArgumentException('The AdminLTE installer needs to be configured through the extra.admin-lte setting.');
     }
     $config = $extras['admin-lte'];
     if (!isset($config['target'])) {
         throw new \InvalidArgumentException('The extra.admin-lte must contains target path.');
     }
     $package = $composer->getRepositoryManager()->getLocalRepository()->findPackage('almasaeed2010/adminlte', '~2.0');
     if ($package === null) {
         throw new \RuntimeException('The AdminLTE package not found.');
     }
     $forPublishing = ['dist' => 'adminlte'];
     if (!empty($config['bootstrap'])) {
         $forPublishing['bootstrap'] = 'adminlte-bootstrap';
     }
     if (!empty($config['plugins'])) {
         $forPublishing['plugins'] = 'adminlte-plugins';
     }
     if (!empty($config['demo'])) {
         $forPublishing[''] = 'adminlte-demo';
     }
     (new Processor(new Filesystem(), $event->getIO()))->publish($config['target'], $composer->getInstallationManager()->getInstallPath($package), $forPublishing, !empty($config['symlink']), !empty($config['relative']));
 }
Exemplo n.º 7
0
    /**
     * Ensures that .htaccess and web.config files are present in Composer root.
     *
     * @param \Composer\Script\Event $event
     */
    public static function ensureHtaccess(Event $event)
    {
        // The current working directory for composer scripts is where you run
        // composer from.
        $vendor_dir = $event->getComposer()->getConfig()->get('vendor-dir');
        // Prevent access to vendor directory on Apache servers.
        $htaccess_file = $vendor_dir . '/.htaccess';
        if (!file_exists($htaccess_file)) {
            file_put_contents($htaccess_file, FileStorage::htaccessLines(TRUE) . "\n");
        }
        // Prevent access to vendor directory on IIS servers.
        $webconfig_file = $vendor_dir . '/web.config';
        if (!file_exists($webconfig_file)) {
            $lines = <<<EOT
<configuration>
  <system.webServer>
    <authorization>
      <deny users="*">
    </authorization>
  </system.webServer>
</configuration>
EOT;
            file_put_contents($webconfig_file, $lines . "\n");
        }
    }
 /**
  * Does some routine installation tasks so people don't have to.
  *
  * @param \Composer\Script\Event $event The composer event object.
  * @throws \Exception Exception raised by validator.
  * @return void
  */
 public static function postInstall(Event $event)
 {
     $io = $event->getIO();
     $rootDir = dirname(dirname(__DIR__));
     static::createAppConfig($rootDir, $io);
     static::createEnvConfig($rootDir, $io);
     static::createWritableDirectories($rootDir, $io);
     // ask if the permissions should be changed
     if ($io->isInteractive()) {
         $validator = function ($arg) {
             if (in_array($arg, ['Y', 'y', 'N', 'n'])) {
                 return $arg;
             }
             throw new Exception('This is not a valid answer. Please choose Y or n.');
         };
         $setFolderPermissions = $io->askAndValidate('<info>Set Folder Permissions ? (Default to Y)</info> [<comment>Y,n</comment>]? ', $validator, 10, 'Y');
         if (in_array($setFolderPermissions, ['Y', 'y'])) {
             static::setFolderPermissions($rootDir, $io);
         }
     } else {
         static::setFolderPermissions($rootDir, $io);
     }
     static::setSecuritySalt($rootDir, $io);
     if (class_exists('\\Cake\\Codeception\\Console\\Installer')) {
         \Cake\Codeception\Console\Installer::customizeCodeceptionBinary($event);
     }
 }
Exemplo n.º 9
0
 public static function ask(Event $oEvent, $sQuestion, $sDefault = null, $bMandatory = false, $fValidatorCustom = null)
 {
     // Get validator
     if ($bMandatory) {
         $fValidator = function ($sValue) use($fValidatorCustom) {
             if ($sValue !== '' and !is_null($sValue)) {
                 if (is_null($fValidatorCustom)) {
                     return $sValue;
                 } else {
                     return call_user_func_array($fValidatorCustom, [$sValue]);
                 }
             } else {
                 throw new RuntimeException('Value can\'t be blank');
             }
         };
     } else {
         $fValidator = function ($sValue) use($fValidatorCustom) {
             $sValue = is_null($sValue) ? '' : $sValue;
             if (is_null($fValidatorCustom)) {
                 return $sValue;
             } else {
                 return call_user_func_array($fValidatorCustom, [$sValue]);
             }
         };
     }
     // Return
     return $oEvent->getIO()->askAndValidate($sQuestion, $fValidator, null, $sDefault);
 }
 public static function createRequiredFiles(Event $event)
 {
     $fs = new Filesystem();
     $root = static::getDrupalRoot(getcwd());
     $dirs = ['modules', 'profiles', 'themes'];
     // Required for unit testing
     foreach ($dirs as $dir) {
         if (!$fs->exists($root . '/' . $dir)) {
             $fs->mkdir($root . '/' . $dir);
             $fs->touch($root . '/' . $dir . '/.gitkeep');
         }
     }
     // Prepare the settings file for installation
     if (!$fs->exists($root . '/sites/default/settings.php')) {
         $fs->copy($root . '/sites/default/default.settings.php', $root . '/sites/default/settings.php');
         $fs->chmod($root . '/sites/default/settings.php', 0666);
         $event->getIO()->write("Create a sites/default/settings.php file with chmod 0666");
     }
     // Prepare the services file for installation
     if (!$fs->exists($root . '/sites/default/services.yml')) {
         $fs->copy($root . '/sites/default/default.services.yml', $root . '/sites/default/services.yml');
         $fs->chmod($root . '/sites/default/services.yml', 0666);
         $event->getIO()->write("Create a sites/default/services.yml file with chmod 0666");
     }
     // Create the files directory with chmod 0777
     if (!$fs->exists($root . '/sites/default/files')) {
         $oldmask = umask(0);
         $fs->mkdir($root . '/sites/default/files', 0777);
         umask($oldmask);
         $event->getIO()->write("Create a sites/default/files directory with chmod 0777");
     }
 }
Exemplo n.º 11
0
 public static function mkdirs(Event $event)
 {
     $extras = $event->getComposer()->getPackage()->getExtra();
     if (!isset($extras['fbourigault-composer-mkdir'])) {
         $message = 'The mkdir handler needs to be configured through the extra.fbourigault-composer-mkdir setting.';
         throw new InvalidArgumentException($message);
     }
     if (!is_array($extras['fbourigault-composer-mkdir'])) {
         $message = 'The extra.fbourigault-composer-mkdir setting must be an array.';
         throw new InvalidArgumentException($message);
     }
     /* Since 2.0, mode is no longer supported */
     $legacy = array_filter($extras['fbourigault-composer-mkdir'], function ($directory) {
         return !is_string($directory);
     });
     if (!empty($legacy)) {
         $message = 'Since 2.0, mode is no longer supported. See UPGRADE-2.0.md for further details.';
         throw new InvalidArgumentException($message);
     }
     /* Remove existing directories from creation list */
     $directories = array_filter($extras['fbourigault-composer-mkdir'], function ($directory) {
         return !file_exists($directory);
     });
     foreach ($directories as $directory) {
         mkdir($directory, 0777, true);
     }
 }
Exemplo n.º 12
0
 public static function manage(Event $event, $extras, $newCopy)
 {
     $ciAppDir = realpath($extras['ci-app-dir']) . DIRECTORY_SEPARATOR;
     $libBaseDir = $ciAppDir . "core" . DIRECTORY_SEPARATOR;
     if ($extras['localize-ready']) {
         self::install('Lang', $libBaseDir);
         self::install('Config', $libBaseDir);
         $routeSource = Manager::getResourcePath('routes.php.mu', '/config');
     } else {
         self::remove('Config', $libBaseDir);
         self::remove('Lang', $libBaseDir);
         $routeSource = Manager::getResourcePath('routes.php', '/config');
     }
     $routeDest = $ciAppDir . "config" . DIRECTORY_SEPARATOR . 'routes.php';
     $writeRoute = TRUE;
     $io = $event->getIO();
     if (!$newCopy) {
         $writeMode = "Updating";
         if (file_exists($routeDest)) {
             $confirmMsg = Colors::confirm("Re-Write Route Configuration File(yes,no)?[no]") . " :";
             $writeRoute = $io->askConfirmation($confirmMsg, FALSE);
         }
     } else {
         $writeMode = PHP_EOL . "Writing";
     }
     if ($writeRoute) {
         $io->write(Colors::message(sprintf("%s Route Configuration File ", $writeMode)) . Colors::info('"config/routes.php"'));
         copy($routeSource, $routeDest);
     }
 }
Exemplo n.º 13
0
 /**
  * Run composer post-install script
  * 
  * @param  Event  $event
  * @return void
  */
 public static function postInstall(Event $event)
 {
     static::init();
     $event->getIO()->write('<info>Writing resources.lock file</info>');
     $installed = json_decode(file_get_contents(static::$vendorPath . '/composer/installed.json'));
     $data = [];
     $finder = (new Finder())->directories()->ignoreVCS(true)->in(static::$resourcesPath . '/packages');
     foreach ($installed as $package) {
         if (!property_exists($package, 'extra')) {
             continue;
         }
         $extra = $package->extra;
         if (!property_exists($extra, 'resources')) {
             continue;
         }
         $resources = $extra->resources;
         foreach ($resources as $resource => $namespaces) {
             foreach ($namespaces as $namespace => $path) {
                 $finder->exclude($namespace);
                 $data[$resource][$namespace] = $path;
             }
         }
     }
     // We turn the iterator to an array to
     // prevent an exception when we delete the directorys
     foreach (iterator_to_array($finder) as $file) {
         \Filesystem::deleteDirectory($file->getPathname());
     }
     file_put_contents(static::$resourcesPath . '/resources.lock', json_encode($data, JSON_PRETTY_PRINT));
 }
Exemplo n.º 14
0
 /**
  * private constructor
  * @param Event $event
  */
 private function __construct($event)
 {
     $this->io = $event->getIO();
     $this->event = $event;
     $this->dir = realpath(__DIR__ . "/../../");
     $this->dbDir = $this->dir . '/scripts/dbupdates';
 }
Exemplo n.º 15
0
 /**
  * Does some routine installation tasks so people don't have to.
  *
  * @param \Composer\Script\Event $event The composer event object.
  * @throws \Exception Exception raised by validator.
  * @return void
  */
 public static function postUpdate(Event $event)
 {
     $io = $event->getIO();
     $rootDir = dirname(dirname(__DIR__));
     $jqueryVendorDir = $rootDir . '/vendor/components/jquery';
     $jqueryWebrootDir = $rootDir . '/webroot/js/vendor/jquery';
     $foundationVendorDir = $rootDir . '/vendor/zurb/foundation/js/foundation';
     $foundationWebrootDir = $rootDir . '/webroot/js/vendor/foundation';
     $modernizrVendorDir = $rootDir . '/vendor/components/modernizr';
     $modernizrWebrootDir = $rootDir . '/webroot/js/vendor/modernizr';
     if (is_dir($jqueryVendorDir)) {
         $jqueryFolder = new Folder($jqueryVendorDir);
         $jqueryFolder->copy($jqueryWebrootDir);
         $io->write('Copied `Jquery` files');
     }
     if (is_dir($foundationVendorDir)) {
         $foundationFolder = new Folder($foundationVendorDir);
         $foundationFolder->copy($foundationWebrootDir);
         $io->write('Copied `Zurb Foundation JS` files');
     }
     if (is_dir($modernizrVendorDir)) {
         $modernizrFolder = new Folder($modernizrVendorDir);
         $modernizrFolder->copy($modernizrWebrootDir);
         $io->write('Copied `Modernizr` files');
     }
 }
Exemplo n.º 16
0
 public static function postInstall(Event $event)
 {
     // provides access to the current Composer instance
     $composer = $event->getComposer();
     // run any post install tasks here
     copy('vendor/xqus/octoguard/gpg-mailgate.php', 'gpg-mailgate.php');
 }
Exemplo n.º 17
0
 /**
  * Merge repositories and requirements from a separate composer-local.json.
  *
  * This allows static development dependencies to be shipped with Vanilla, but can be customized with a
  * composer-local.json file that specifies additional dependencies such as plugins or compatibility libraries.
  *
  * @param Event $event The event being fired.
  */
 public static function preUpdate(Event $event)
 {
     self::clearAddonManagerCache();
     // Check for a composer-local.json.
     $composerLocalPath = './composer-local.json';
     if (!file_exists($composerLocalPath)) {
         return;
     }
     $composer = $event->getComposer();
     $factory = new Factory();
     $localComposer = $factory->createComposer($event->getIO(), $composerLocalPath, true, null, false);
     // Merge repositories.
     $localRepositories = $localComposer->getRepositoryManager()->getRepositories();
     foreach ($localRepositories as $repository) {
         /* @var \Composer\Repository\RepositoryInterface $repository */
         if (method_exists($repository, 'getRepoConfig')) {
             $config = $repository->getRepoConfig();
         } else {
             $config = ['url' => ''];
         }
         // Skip the packagist repo.
         if (strpos($config['url'], 'packagist.org') !== false) {
             continue;
         }
         $composer->getRepositoryManager()->addRepository($repository);
     }
     // Merge requirements.
     $requires = array_merge($composer->getPackage()->getRequires(), $localComposer->getPackage()->getRequires());
     $composer->getPackage()->setRequires($requires);
     $devRequires = array_merge($composer->getPackage()->getDevRequires(), $localComposer->getPackage()->getDevRequires());
     $composer->getPackage()->setDevRequires($devRequires);
 }
Exemplo n.º 18
0
 /**
  * Installs index.php and themes.
  *
  * @param Event $event
  * @return bool
  */
 public static function postPackageInstall(Event $event)
 {
     $installedPackage = $event->getOperation()->getPackage();
     // do stuff
     // var_dump($event);
     return true;
 }
Exemplo n.º 19
0
 /**
  * {@inheritdoc}
  */
 public function onInstallUpdateOrDump(Event $event)
 {
     // Wikimedia is also registered as a plugin, so it will have a chance to
     // merge it's dependencies. Here we override and add our module
     // dependencies.
     $this->mergeForDrupalRootPackage($event->getComposer());
 }
 public static function addPhpCsToPreCommitHook(Event $event)
 {
     $extra = $event->getComposer()->getPackage()->getExtra();
     $dependencyToResolve = self::arrayResolvePath("codesniffer:standard:dependency", $extra);
     if (is_null($dependencyToResolve)) {
         $event->getIO()->writeError("Cannot install pre-commit hooks. No CodeSniffer standard configured at extra->codesniffer->standard.");
         return;
     }
     if (is_array($dependencyToResolve)) {
         $event->getIO()->writeError("Cannot install pre-commit hooks. Configuration of extra->codesniffer->standard->dependency is invalid.");
         return;
     }
     $originFile = getcwd() . '/.git/hooks/pre-commit';
     if (!is_dir(dirname($originFile))) {
         mkdir(dirname($originFile), 0777, true);
     }
     $templateContent = file_get_contents(__DIR__ . '/templates/git/hooks/pre-commit-phpcs');
     $originContent = '';
     if (file_exists($originFile)) {
         $originContent = file_get_contents($originFile);
     }
     if (strpos($originContent, '# BEGIN:metasyntactical/composer-codesniffer-hooks') !== false) {
         return;
     }
     $newContent = $originContent;
     if (mb_strlen($originContent)) {
         $newContent .= "\n";
     }
     $newContent .= str_replace(array("{STANDARDPATH}"), array($event->getComposer()->getConfig()->get("vendor-dir", Config::RELATIVE_PATHS) . "/{$dependencyToResolve}/ruleset.xml"), $templateContent);
     file_put_contents($originFile, $newContent);
     $perms = fileperms($originFile);
     chmod($originFile, $perms | 0x40 | 0x8 | 0x1);
     clearstatcache(null, $originFile);
 }
Exemplo n.º 21
0
 public static function setup(Event $event)
 {
     $composer = $event->getComposer();
     $installer = new self($event->getIO(), $composer, 'tiki-theme');
     $composer->getInstallationManager()->addInstaller($installer);
     $composer->getEventDispatcher()->addSubscriber($installer);
 }
Exemplo n.º 22
0
 /**
  * Composer post install script
  *
  * @param Event $event
  */
 private static function showMessage(Event $event = null)
 {
     $io = $event->getIO();
     $io->write('==================================================');
     $io->write('Welcome to CodeIgniter Composer Project!');
     $io->write('<info>Copy `application folder` of CodeIgniter to root.</info>');
     $io->write('<info>Copy `index.php` of CodeIgniter to root.</info>');
     $io->write('<info>Copy `.htaccess` of CodeIgniter to root.</info>');
     $io->write('<info>Update `index.php` to Vendor - CodeIgniter System folder.</info>');
     $io->write('<info>Update `index.php` to Application folder on root.</info>');
     $io->write('<info>Update `config.php` to use a better base_url.</info>');
     $io->write('<info>Update `config.php` to read Composer packages on Vendor Folder.</info>');
     $io->write('<info>Update `config.php` to make index_page blank.</info>');
     $io->write('<info>Installation complete! \\o/</info>');
     $io->write('==================================================');
     $io->write('**************************************************');
     $io->write('==================================================');
     $io->write('<info>`/.htaccess` was installed. If you don\'t need it, please remove it.</info>');
     $io->write('<info>If you want to install translations for system messages:</info>');
     $io->write('$ cd <project_folder>');
     $io->write('$ php bin/install.php');
     $io->write('<info>Above command will show help message.</info>');
     $io->write('See <https://github.com/Eihror/codeigniter-project> for details');
     $io->write('==================================================');
 }
Exemplo n.º 23
0
 /**
  * Does some routine installation tasks so people don't have to.
  *
  * @param \Composer\Script\Event $event The composer event object.
  * @return void
  */
 public static function postInstall(Event $event)
 {
     $io = $event->getIO();
     $rootDir = dirname(dirname(dirname(dirname(dirname(__DIR__)))));
     $pluginDir = dirname(dirname(__DIR__));
     static::createPluginConfig($rootDir, $pluginDir, $io);
 }
Exemplo n.º 24
0
 /**
  * @author Krzysztof Bednarczyk
  * @param Event $event
  */
 public static function build(Event $event)
 {
     self::$composer = $event->getComposer();
     self::$packagesList = self::$composer->getRepositoryManager()->getLocalRepository()->getPackages();
     self::$installationManager = self::$composer->getInstallationManager();
     $packages = [];
     $corePackage = null;
     /**
      * @var $package CompletePackage
      */
     foreach (self::$packagesList as $package) {
         if ($item = self::generatePackageEntry($package)) {
             $packages[] = $item;
         }
     }
     if ($item = self::generatePackageEntry(self::$composer->getPackage(), true)) {
         $packages[] = $item;
     }
     $xvDir = realpath(self::$composer->getConfig()->get('archive-dir')) . DIRECTORY_SEPARATOR . '.xvEngine';
     if (!file_exists($xvDir)) {
         mkdir($xvDir);
     }
     /**
      * Hide directory in windows
      */
     if (strncasecmp(PHP_OS, 'WIN', 3) == 0) {
         exec('attrib +H ' . escapeshellarg($xvDir), $res);
     }
     $data = ["packages" => $packages];
     file_put_contents($xvDir . DIRECTORY_SEPARATOR . "packages.json", json_encode($data, JSON_PRETTY_PRINT));
 }
Exemplo n.º 25
0
 public function postAutoloadDump(Event $event)
 {
     // Plugin has been uninstalled
     if (!file_exists(__FILE__)) {
         return;
     }
     if (!$this->initialized) {
         $this->initialize($event->getComposer(), $event->getIO());
     }
     // This method is called twice. Run it only once.
     if (!$this->runPostAutoloadDump) {
         return;
     }
     $this->runPostAutoloadDump = false;
     $io = $event->getIO();
     $compConfig = $event->getComposer()->getConfig();
     $vendorDir = $compConfig->get('vendor-dir');
     // On TravisCI, $vendorDir is a relative path. Probably an old Composer
     // build or something. Usually, $vendorDir should be absolute already.
     $vendorDir = Path::makeAbsolute($vendorDir, $this->rootDir);
     $autoloadFile = $vendorDir . '/autoload.php';
     $classMapFile = $vendorDir . '/composer/autoload_classmap.php';
     try {
         $factoryClass = $this->getConfigKey('factory.in.class');
         $factoryFile = $this->getConfigKey('factory.in.file');
     } catch (PuliRunnerException $e) {
         $this->printWarning($io, 'Could not load Puli configuration', $e);
         return;
     }
     $factoryFile = Path::makeAbsolute($factoryFile, $this->rootDir);
     $this->insertFactoryClassConstant($io, $autoloadFile, $factoryClass);
     $this->insertFactoryClassMap($io, $classMapFile, $vendorDir, $factoryClass, $factoryFile);
     $this->setBootstrapFile($io, $autoloadFile);
 }
Exemplo n.º 26
0
 public static function postInstallCmd(Event $event)
 {
     $baseXmlnuke = realpath(dirname(__FILE__) . "/../../../..");
     $baseProject = realpath(dirname($baseXmlnuke) . "/../..");
     $extra = $event->getComposer()->getPackage()->getExtra();
     if (isset($extra) && isset($extra['project-name'])) {
         $projectName = $extra['project-name'];
     } else {
         $projectName = basename($baseProject);
     }
     $output = $event->getIO();
     $output->write('=== XMLNUKE ===', true);
     $output->write('Xmlnuke Dir: ' . $baseXmlnuke, true);
     $output->write('Project Dir: ' . $baseProject, true);
     if (!file_exists($baseProject . '/httpdocs')) {
         $output->write("Creating Project...", true);
         $result = call_user_func_array(array('\\Xmlnuke\\Util\\CreatePhp5Project', 'Run'), array($baseXmlnuke . '/Composer.php', $baseProject, preg_replace('/[^A-Za-z0-0]/', '', $projectName), "en-us"));
     }
     if (!file_exists($baseProject . '/httpdocs/config.inc.php')) {
         $output->write("Setting the project ...", true);
         $configInc = file_get_contents($baseProject . "/httpdocs/config.inc-dist.php");
         $configInc = str_replace('#XMLNUKE#', $baseXmlnuke, str_replace('#PROJECT#', $baseProject, $configInc));
         file_put_contents($baseProject . "/httpdocs/config.inc.php", $configInc);
     }
     if (!file_exists($baseProject . '/data/anydataset/_db.anydata.xml')) {
         $output->write("Setting the _db.anydata ...", true);
         $dbInc = file_get_contents($baseProject . "/data/anydataset/_db.anydata-dist.xml");
         file_put_contents($baseProject . "/data/anydataset/_db.anydata.xml", $dbInc);
     }
     $output->write("Updating Project References...", true);
     CreatePhp5Project::Update($baseXmlnuke, $baseProject);
 }
Exemplo n.º 27
0
 /**
  * Private method that manages the options of commands.
  *
  * @param Event $event The command event
  *
  * @return array
  */
 private static function getOptions(Event $event)
 {
     $extras = $event->getComposer()->getPackage()->getExtra();
     $options = isset($extras['kreta-distribution']) ? $extras['kreta-distribution'] : [];
     $options = array_merge(['npm-bin-links' => true, 'process-timeout' => $event->getComposer()->getConfig()->get('process-timeout')], $options);
     return $options;
 }
Exemplo n.º 28
0
 public function onPostUpdate(Event $event)
 {
     $requires = [];
     $overrides = [];
     $resolutions = [];
     if ($event->isDevMode()) {
         $extra = $this->composer->getPackage()->getExtra();
         $bower = isset($extra['bower']) ? $extra['bower'] : [];
         if (isset($bower['require-dev'])) {
             $requires = $this->_mergeDependencyVersions($requires, $bower['require-dev']);
         }
     }
     $packages = [$this->composer->getPackage()];
     $packages = array_merge($packages, $this->composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages());
     foreach ($packages as $package) {
         if ($package instanceof CompletePackage) {
             $extra = $package->getExtra();
             $bower = isset($extra['bower']) ? $extra['bower'] : [];
             if (isset($bower['require'])) {
                 $requires = $this->_mergeDependencyVersions($requires, $bower['require']);
             }
             if (isset($bower['overrides'])) {
                 $overrides = array_merge_recursive($overrides, $bower['overrides']);
             }
             if (isset($bower['resolutions'])) {
                 $resolutions = $bower['resolutions'];
             }
         }
     }
     if (!$requires) {
         $this->info("No Bower packages are required by the application or by any installed Composer package");
     }
     $dependencies = $this->_installBower($requires, $overrides, $resolutions);
     $this->info((count($dependencies) ?: "No") . " bower packages are installed");
 }
Exemplo n.º 29
0
 public static function postInstall(Event $event)
 {
     $io = $event->getIO();
     $rootDir = dirname(dirname(__DIR__));
     static::createAppConfig($rootDir, $io);
     static::setFolderPermissions($rootDir, $io);
 }
 public static function buildParameters(Event $event)
 {
     $extras = $event->getComposer()->getPackage()->getExtra();
     if (empty($extras['wmc-app-loader']['file'])) {
         if (empty($extras['symfony-app-dir'])) {
             throw new \InvalidArgumentException('Either extra.symfony-app-dir or extra.wmc-app-loader.file setting are required to use this script handler.');
         }
         $appDir = $extras['symfony-app-dir'];
         $appLoader = new AppLoader($appDir, null);
         $realFile = $appLoader->getDefaultOptionsFile();
     } else {
         $realFile = $extras['wmc-app-loader']['file'];
     }
     if (empty($extras['wmc-app-loader']['dist-file'])) {
         $distFile = $realFile . '.dist';
         if (!is_file($distFile)) {
             // using packaged dist file
             $distFile = PackageLocator::getPackagePath($event->getComposer(), 'wemakecustom/symfony-app-loader') . '/app/config/app_loader.ini.dist';
         }
     } else {
         $distFile = $extras['wmc-app-loader']['dist-file'];
     }
     $keepOutdatedParams = false;
     if (isset($extras['wmc-app-loader']['keep-outdated'])) {
         $keepOutdatedParams = (bool) $extras['wmc-app-loader']['keep-outdated'];
     }
     $updater = Utils::createConfigFileUpdate($event->getIO());
     $updater->getConfigMerger()->setKeepOutdatedParams($keepOutdatedParams);
     $updater->updateFile($realFile, $distFile);
 }