public static function makeAutoload(Event $event)
 {
     $composer = $event->getComposer();
     $generator = $composer->getAutoloadGenerator();
     $generator->setDevMode($event->isDevMode());
     $generator->dump($composer->getConfig(), $composer->getRepositoryManager()->getLocalRepository(), $composer->getPackage(), $composer->getInstallationManager(), 'composer', !$event->isDevMode());
     $event->getIO()->write('-> generated composer autoload files');
 }
 /**
  * Creates the doctrine schema.
  *
  * @param Event $event
  */
 public static function createDoctrineSchema(Event $event)
 {
     $envs = $event->isDevMode() ? ['dev', 'test'] : ['prod'];
     foreach ($envs as $env) {
         $cmd = sprintf('sententiaregum:install:database --no-interaction --apply-fixtures --env=%s', $env);
         if (!$event->isDevMode()) {
             $cmd .= ' --production-fixtures -s migrations';
         }
         static::executeCommand($event, static::getConsoleDir($event, 'create doctrine schema'), $cmd);
     }
 }
Esempio n. 3
0
 /**
  * @param Event $event
  * @param       $filename
  * @param       $s3key
  * @throws \Exception
  */
 protected static function getFile(Event $event, $filename, $s3key)
 {
     $env = getenv('SYRUP_ENV');
     if (!$env) {
         $env = $event->isDevMode() ? 'dev' : 'prod';
     }
     if (!in_array($env, ['dev', 'test', 'prod'])) {
         throw new \Exception('SYRUP_ENV only accepts value "dev", "test" or "prod"');
     }
     if ($env == 'dev') {
         if ($event->getIO()->isInteractive()) {
             $event->getIO()->askAndValidate("<comment>Get <question>{$filename}</question> from development S3 bucket? [<options=bold>y</options=bold>/n/s]:\ny - yes <info>(default)</info>\nn - no <info>(manually input folder containing the file)</info>\ns - skip <info>(keep current file)</info>\n</comment>", function ($answer) use($event, $s3key, $filename, $env) {
                 switch ($answer) {
                     case "y":
                         self::getFromS3($event->getIO(), $s3key, self::PARAMETERS_DIR . $filename, $env);
                         break;
                     case "n":
                         self::getFromIO($event->getIO(), $filename);
                         break;
                     case "s":
                         break;
                     default:
                         throw new \InvalidArgumentException("Invalid option! Please choose either y, n or s");
                 }
             }, 3, "y");
         } elseif (file_exists("./{$filename}") && $event->getIO()->askConfirmation("Use './{$filename}'? [<options=bold>y</options=bold>/n]", true)) {
             self::getFromIO($event->getIO(), $filename, ".");
         } else {
             self::getFromS3($event->getIO(), $s3key, self::PARAMETERS_DIR . $filename, $env);
         }
     } else {
         self::getFromS3($event->getIO(), $s3key, self::PARAMETERS_DIR . $filename, $env);
     }
 }
Esempio n. 4
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");
 }
 /**
  * @param Event $event
  */
 public static function overload(Event $event)
 {
     $extra = $event->getComposer()->getPackage()->getExtra();
     if ($event->isDevMode()) {
         $envs = [static::EXTRA_OVERLOAD_CLASS, static::EXTRA_OVERLOAD_CLASS_DEV];
         $cacheDir = static::EXTRA_OVERLOAD_CACHE_DIR_DEV;
         if (array_key_exists($cacheDir, $extra) === false) {
             $cacheDir = static::EXTRA_OVERLOAD_CACHE_DIR;
         }
     } else {
         $envs = [static::EXTRA_OVERLOAD_CLASS];
         $cacheDir = static::EXTRA_OVERLOAD_CACHE_DIR;
     }
     foreach ($envs as $extraKey) {
         if (array_key_exists($extraKey, $extra)) {
             $autoload = $event->getComposer()->getPackage()->getAutoload();
             if (array_key_exists('classmap', $autoload) === false) {
                 $autoload['classmap'] = array();
             }
             foreach ($extra[$extraKey] as $className => $infos) {
                 static::generateProxy($extra[$cacheDir], $className, $infos['original-file']);
                 $autoload['classmap'][$className] = $infos['overload-file'];
             }
             $event->getComposer()->getPackage()->setAutoload($autoload);
         }
     }
 }
 /**
  * @param Event $event
  * @return null
  */
 public static function checkHooks(Event $event)
 {
     $io = $event->getIO();
     // Don't run pre-commit in non-dev mode
     if (!$event->isDevMode()) {
         return null;
     }
     // Cannot install pre-commit with a windows machine
     if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
         return null;
     }
     $projectRoot = realpath(__DIR__ . '/../../../../../');
     $packageHook = $projectRoot . '/bin/pre-commit';
     if (strpos($projectRoot, 'laravel') !== false) {
         $projectRoot = realpath($projectRoot . '/../');
         $packageHook = $projectRoot . '/laravel/bin/pre-commit';
     }
     $hooksDir = realpath($projectRoot . '/.git/hooks/');
     $newHook = $hooksDir . '/pre-commit';
     if (@file_get_contents($newHook) !== @file_get_contents($packageHook)) {
         $io->write('<comment>GIT hooks are missing</comment>');
         $symlink = symlink($packageHook, $newHook);
         if (false === $symlink) {
             $io->write('<error>Failed to symlink the GIT hooks</error>');
             return null;
         }
         chmod($newHook, 0755);
         $defaultPhpCSFile = realpath(__DIR__ . '/../../.php_cs.example');
         $newPhpCSFile = $projectRoot . '/.php_cs';
         copy($defaultPhpCSFile, $newPhpCSFile);
     }
     $io->write('<info>GIT hooks are succesfully installed</info>');
 }
 public static function buildConfig(Event $event)
 {
     if (true === $event->isDevMode()) {
         $message = "Deprecated instalation script!!\n";
         $message .= "Please replace it by \\PhpGitHooks\\Infrastructure\\Composer\\ConfiguratorScript::buildConfig\nin your composer.json file";
         $event->getIO()->writeError(sprintf('<error>%s</error>', $message));
     }
 }
 public function onPostUpdate(Event $event)
 {
     $assetsLock = array('bower-dependencies' => array(), 'npm-dependencies' => array());
     $packages = $this->composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages();
     $mergedNpmPackages = array();
     // NPM install for dependencies that are not exposed.
     foreach ($packages as $package) {
         if ($package instanceof \Composer\Package\CompletePackage) {
             $extra = $package->getExtra();
             if (!isset($extra['expose-npm-packages']) || $extra['expose-npm-packages'] != true) {
                 $shrinkwrapDeps = $this->_installNpm($this->composer->getConfig()->get('vendor-dir') . '/' . $package->getName(), $package, false, array(), null);
                 if ($shrinkwrapDeps) {
                     $assetsLock['npm-dependencies'][$package->getName()] = $shrinkwrapDeps;
                 }
             } else {
                 $mergedNpmPackages[] = $package;
             }
         }
     }
     // NPM install for dependencies that are exposed on the root package.
     $shrinkwrapDeps = $this->_installNpm('.', $this->composer->getPackage(), $event->isDevMode(), $mergedNpmPackages, null);
     if ($shrinkwrapDeps) {
         $assetsLock['npm-dependencies']['self'] = $shrinkwrapDeps;
     }
     $this->_createNpmBinaries();
     $requireBower = array();
     if ($event->isDevMode()) {
         $extra = $this->composer->getPackage()->getExtra();
         if (isset($extra['require-dev-bower'])) {
             $requireBower = $this->_mergeDependencyVersions($requireBower, $extra['require-dev-bower']);
         }
     }
     $packages = array($this->composer->getPackage());
     $packages = array_merge($packages, $this->composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages());
     foreach ($packages as $package) {
         if ($package instanceof \Composer\Package\CompletePackageInterface) {
             $extra = $package->getExtra();
             if (isset($extra['require-bower'])) {
                 $requireBower = $this->_mergeDependencyVersions($requireBower, $extra['require-bower']);
             }
         }
     }
     $assetsLock['bower-dependencies'] = $this->_installBower($requireBower);
     $assetsLockFile = new JsonFile('composer-extra-assets.lock');
     $assetsLockFile->write($assetsLock);
 }
 /**
  * @param Event $event
  *
  * @return mixed
  */
 public static function buildConfig(Event $event)
 {
     if (true === $event->isDevMode()) {
         $container = new AppKernel();
         /** @var ConfigurationProcessorCommandHandler $processor */
         $processor = $container->get('command.bus');
         $processor->handle(new ConfigurationProcessorCommand($event->getIO()));
     }
 }
 public static function buildConfig(Event $event)
 {
     if (true === $event->isDevMode()) {
         $container = new Container();
         /** @var ConfiguratorProcessor $processor */
         $processor = $container->get('configurator.processor');
         $processor->setIO($event->getIO());
         return $processor->process();
     }
 }
Esempio n. 11
0
 private static function install(Event $event)
 {
     if (!$event->isDevMode()) {
         return;
     }
     $manager = new GitHookManager();
     if ($manager->isInstalled() || $manager->install()) {
         $event->getIO()->write('Pre-commit hook has been successfully installed.');
     } else {
         $event->getIO()->writeError('Some errors occurred during the installation process. Pre-commit hook are NOT installed.');
     }
 }
Esempio n. 12
0
 public function start(Event $e)
 {
     $package = $this->composer->getPackage();
     $fetches = array_merge($this->getFetchesInExtra($package, self::EXTRA_KEY), $this->findFetchesInRequire($package));
     $this->baseDir = $this->determineBaseDir($fetches, self::DEFAULT_BASE_DIR);
     $this->targets = $this->processFetches($package, $fetches);
     if ($e->isDevMode()) {
         $devFetches = array_merge($this->getFetchesInExtra($package, self::EXTRA_KEY_DEV), $this->findFetchesInRequireDev($package));
         $this->baseDirDev = $this->determineBaseDir($devFetches, self::DEFAULT_BASE_DIR_DEV);
         $this->targetsDev = $this->processFetches($package, $devFetches);
     }
 }
Esempio n. 13
0
 /**
  * @param Event $event
  * @return bool
  */
 public static function setupPhpStorm(Event $event)
 {
     if ($event->isDevMode()) {
         try {
             (new IdeSetup(self::getProject(), new PhpStormIde()))->setup();
         } catch (Exception $e) {
             null;
         }
         return true;
     }
     return false;
 }
Esempio n. 14
0
 /**
  * @param Event $event
  *
  * @return mixed
  */
 public static function buildConfig(Event $event)
 {
     if (true === $event->isDevMode()) {
         $app = new AppKernel('dev', true);
         $app->boot();
         $container = $app->getContainer();
         /**
          * @var ConfigurationProcessorCommandHandler
          */
         $processor = $container->get('bruli.command.bus');
         $processor->handle(new ConfigurationProcessorCommand($event->getIO()));
     }
 }
 public static function rebuildData(Event $event)
 {
     $io = $event->getIO();
     if (!$event->isDevMode()) {
         $io->write('This script is only supported in development mode. Exiting.');
         return;
     }
     $destroyed = self::destroyData($event);
     if ($destroyed) {
         MigrationHandler::runMigration(new Event($event->getName(), $event->getComposer(), $event->getIO(), $event->isDevMode(), ['--all']));
         FixtureHandler::importFixture(new Event($event->getName(), $event->getComposer(), $event->getIO(), $event->isDevMode(), ['-target=honeybee.system_account::fixture::writer', '-fixture=20150819120801:import_demo_user']));
         FixtureHandler::importFixture(new Event($event->getName(), $event->getComposer(), $event->getIO(), $event->isDevMode(), ['-target=hbdemo.commenting::fixture::writer', '-fixture=20150810231335:initial_test_data']));
     }
 }
 public function __construct(Event $event, PuliRunner $puliRunner = null)
 {
     $this->composer = $event->getComposer();
     $this->io = $event->getIO();
     $this->config = $this->composer->getConfig();
     $this->isDev = $event->isDevMode();
     $this->puliRunner = $puliRunner;
     $this->rootDir = Path::normalize(getcwd());
 }
Esempio n. 17
0
 public function onPostUpdateInstall(Event $event)
 {
     $this->_installNpm('.', $this->composer->getPackage(), $event->isDevMode());
     $packages = $this->composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages();
     foreach ($packages as $package) {
         if ($package instanceof \Composer\Package\CompletePackage) {
             $this->_installNpm('vendor/' . $package->getName(), $package, false);
         }
     }
     $requireBower = array();
     if ($event->isDevMode()) {
         $extra = $this->composer->getPackage()->getExtra();
         if (isset($extra['require-dev-bower'])) {
             foreach ($extra['require-dev-bower'] as $packageName => $versionConstraint) {
                 if (isset($requireBower[$packageName]) && $requireBower[$packageName] != $versionConstraint) {
                     $this->io->write("<error>ERROR: {$package->getName()} requires {$packageName} {$versionConstraint} but we have already {$requireBower[$packageName]}</error>");
                 } else {
                     $requireBower[$packageName] = $versionConstraint;
                 }
             }
         }
     }
     $packages = array($this->composer->getPackage());
     $packages = array_merge($packages, $this->composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages());
     foreach ($packages as $package) {
         if ($package instanceof \Composer\Package\CompletePackage) {
             $extra = $package->getExtra();
             if (isset($extra['require-bower'])) {
                 foreach ($extra['require-bower'] as $packageName => $versionConstraint) {
                     if (isset($requireBower[$packageName]) && $requireBower[$packageName] != $versionConstraint) {
                         $this->io->write("<error>ERROR: {$package->getName()} requires {$packageName} {$versionConstraint} but we have already {$requireBower[$packageName]}</error>");
                     } else {
                         $requireBower[$packageName] = $versionConstraint;
                     }
                 }
             }
         }
     }
     if ($requireBower) {
         if (file_exists('bower.json')) {
             $p = json_decode(file_get_contents('bower.json'), true);
             if ($p['name'] != 'temp-composer-extra-asssets') {
                 //assume we can overwrite our own temp one
                 throw new \Exception("Can't install npm dependencies as there is already a bower.json");
             }
         }
         $packageJson = array('name' => 'temp-composer-extra-asssets', 'repository' => array('type' => 'git'), 'dependencies' => $requireBower);
         file_put_contents('bower.json', json_encode($packageJson));
         if (!file_exists('.bowerrc')) {
             $config = array('directory' => 'vendor/bower_components');
             file_put_contents('.bowerrc', json_encode($config));
         }
         $this->io->write("");
         $this->io->write("installing bower dependencies...");
         $cmd = "vendor/koala-framework/composer-extra-assets/node_modules/.bin/bower install";
         passthru($cmd, $retVar);
         if ($retVar) {
             $this->io->write("<error>bower install failed</error>");
         }
     }
 }
 public static function createUser(Event $event)
 {
     self::call(new Event($event->getName(), $event->getComposer(), $event->getIO(), $event->isDevMode(), ['-route=honeybee.system_account.user.create']));
 }
Esempio n. 19
0
 /**
  * Set the debug flag value in the application's config file.
  *
  * @param string $dir The application's root directory.
  * @param Event $event The composer event object.
  * @return void
  */
 private static function setDebugLevel($dir, Event $event)
 {
     $io = $event->getIO();
     $debug = $event->isDevMode() ? 'true' : 'false';
     $config = $dir . '/config/app.php';
     $originalContent = file_get_contents($config);
     $newContent = str_replace('__DEBUG__', $debug, $originalContent, $count);
     if ($count == 0) {
         $io->write('No debug placeholder to replace.');
         return;
     }
     $result = file_put_contents($config, $newContent);
     if ($result) {
         $io->write('Updated debug value in config/app.php');
         return;
     }
     $io->write('Unable to update debug value.');
 }
Esempio n. 20
0
 /**
  * Throws exception if Composer is not in dev mode
  *
  * @param \Composer\Script\Event Composer Event
  * @throws Exception Throws exception if Composer is not in dev mode
  */
 public static function confirmDevMode(Event $event)
 {
     if (!$event->isDevMode()) {
         throw new \Exception('Composer is not in dev mode. Will not create/modify ctags file.');
     }
 }
Esempio n. 21
0
 public function __construct(Event $event, PuliRunner $puliRunner = null)
 {
     $this->composer = $event->getComposer();
     $this->io = $event->getIO();
     $this->config = $this->composer->getConfig();
     $this->isDev = $event->isDevMode();
     $this->puliRunner = $puliRunner;
     $this->rootDir = Path::normalize(getcwd());
     $vendorDir = $this->config->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);
     $this->autoloadFile = $vendorDir . '/autoload.php';
 }
Esempio n. 22
0
 /**
  * Delegate autoload dump to all the monorepo subdirectories.
  */
 public function generateMonorepoAutoloads(Event $event)
 {
     $flags = $event->getFlags();
     $optimize = isset($flags['optimize']) ? $flags['optimize'] : false;
     $this->build->build(getcwd(), $optimize, !$event->isDevMode());
 }
 /**
  * Handle post install command events.
  *
  * @param Event $event The event to handle.
  *
  * @throws NpmNotFoundException      If the npm executable cannot be located.
  * @throws NpmCommandFailedException If the operation fails.
  */
 public function onPostInstallCmd(Event $event)
 {
     $this->bridgeFactory->createBridge($event->getIO())->install($event->getComposer(), $event->isDevMode());
 }
Esempio n. 24
0
 /**
  * Run the build tools
  *
  * @param Event $event
  */
 public function runBuildTools(Event $event)
 {
     foreach ($this->finder->getDependentPackages($event->isDevMode()) as $package) {
         $this->runner->runBuildTools($package, $event->isDevMode());
     }
 }
 /**
  * Handle post install command events.
  *
  * @param Event $event The event to handle.
  *
  * @throws Exception\GruntNotFoundException      If the grunt executable cannot be located.
  * @throws Exception\GruntCommandFailedException If the operation fails.
  */
 public function onPostInstallCmd(Event $event)
 {
     $this->bridgeFactory()->create($event->getIO())->runGruntTasks($event->getComposer(), $event->isDevMode());
 }
Esempio n. 26
0
 /**
  * Handle an event callback following an install or update command. If our
  * plugin was installed during the run then trigger an update command to
  * process any merge-patterns in the current config.
  *
  * @param Event $event
  */
 public function onPostInstallOrUpdate(Event $event)
 {
     if ($this->pluginFirstInstall) {
         $this->pluginFirstInstall = false;
         $this->debug('<comment>' . 'Running additional update to apply merge settings' . '</comment>');
         $config = $this->composer->getConfig();
         $preferSource = $config->get('preferred-install') == 'source';
         $preferDist = $config->get('preferred-install') == 'dist';
         $installer = Installer::create($event->getIO(), Factory::create($event->getIO(), null, false));
         $installer->setPreferSource($preferSource);
         $installer->setPreferDist($preferDist);
         $installer->setDevMode($event->isDevMode());
         $installer->setDumpAutoloader($this->dumpAutoloader);
         $installer->setOptimizeAutoloader($this->optimizeAutoloader);
         // Force update mode so that new packages are processed rather
         // than just telling the user that composer.json and composer.lock
         // don't match.
         $installer->setUpdate(true);
         $installer->run();
     }
 }
Esempio n. 27
0
 /**
  * Run gulp build
  *
  * @param Event $event
  */
 public static function gulpBuild(Event $event)
 {
     static::runCommandOnlyInDevMode('gulp build', $event->getIO(), $event->isDevMode());
 }
Esempio n. 28
0
 /**
  * Handle an event callback following an install or update command. If our
  * plugin was installed during the run then trigger an update command to
  * process any merge-patterns in the current config.
  *
  * @param Event $event
  */
 public function onPostInstallOrUpdate(Event $event)
 {
     // @codeCoverageIgnoreStart
     if ($this->state->isFirstInstall()) {
         $this->state->setFirstInstall(false);
         $this->logger->info('<comment>' . 'Running additional update to apply merge settings' . '</comment>');
         $config = $this->composer->getConfig();
         $preferSource = $config->get('preferred-install') == 'source';
         $preferDist = $config->get('preferred-install') == 'dist';
         $installer = Installer::create($event->getIO(), Factory::create($event->getIO(), null, false));
         $installer->setPreferSource($preferSource);
         $installer->setPreferDist($preferDist);
         $installer->setDevMode($event->isDevMode());
         $installer->setDumpAutoloader($this->state->shouldDumpAutoloader());
         $installer->setOptimizeAutoloader($this->state->shouldOptimizeAutoloader());
         if ($this->state->forceUpdate()) {
             // Force update mode so that new packages are processed rather
             // than just telling the user that composer.json and
             // composer.lock don't match.
             $installer->setUpdate(true);
         }
         $installer->run();
     }
     // @codeCoverageIgnoreEnd
 }
Esempio n. 29
0
 /**
  * Run first install.
  *
  * @param  \Composer\Script\Event  $event
  *
  * @throws \Exception
  *
  * @codeCoverageIgnore
  */
 private function runFirstInstall(ScriptEvent $event)
 {
     $installer = Installer::create($event->getIO(), Factory::create($event->getIO(), null, false));
     $installer->setPreferSource($this->isPreferredInstall('source'));
     $installer->setPreferDist($this->isPreferredInstall('dist'));
     $installer->setDevMode($event->isDevMode());
     $installer->setDumpAutoloader($this->state->shouldDumpAutoloader());
     $installer->setOptimizeAutoloader($this->state->shouldOptimizeAutoloader());
     if ($this->state->forceUpdate()) {
         // Force update mode so that new packages are processed rather than just telling
         // the user that composer.json and composer.lock don't match.
         $installer->setUpdate(true);
     }
     $installer->run();
 }