Skip to content
Snippets Groups Projects
BaseHandler.php 4.11 KiB
Newer Older
  • Learn to ignore specific revisions
  • <?php
    
    namespace LakeDrops\Component\Composer;
    
    use Composer\Composer;
    use Composer\IO\IOInterface;
    
    use Composer\Package\PackageInterface;
    
    use Composer\Script\Event;
    use Symfony\Component\Console\Input\InputInterface;
    
    jurgenhaas's avatar
    jurgenhaas committed
     * Base handler class to provide common functionality.
    
     *
     * @package LakeDrops\Component\Composer
     */
    
    abstract class BaseHandler implements BaseHandlerInterface {
    
    
      /**
       * The composer object of this session.
       *
       * @var \Composer\Composer
       */
    
    jurgenhaas's avatar
    jurgenhaas committed
      protected Composer $composer;
    
    
      /**
       * The input-output object of the composer session.
       *
       * @var \Composer\IO\IOInterface
       */
    
    jurgenhaas's avatar
    jurgenhaas committed
      protected IOInterface $io;
    
      /**
       * The project config.
       *
       * @var \LakeDrops\Component\Composer\Config
       */
    
    jurgenhaas's avatar
    jurgenhaas committed
      protected Config $config;
    
    jurgenhaas's avatar
    jurgenhaas committed
       * The input service.
       *
    
       * @var \Symfony\Component\Console\Input\InputInterface
       */
    
    jurgenhaas's avatar
    jurgenhaas committed
      protected InputInterface $consoleInput;
    
    
      /**
       * The event that triggered the action.
       *
       * @var \Composer\Script\Event
       */
    
    jurgenhaas's avatar
    jurgenhaas committed
      protected Event $event;
    
      /**
       * The Drupal core package.
       *
       * @var \Composer\Package\PackageInterface
       */
    
    jurgenhaas's avatar
    jurgenhaas committed
      protected PackageInterface $drupalCorePackage;
    
    jurgenhaas's avatar
    jurgenhaas committed
       * The .env service.
       *
    
       * @var \LakeDrops\Component\Composer\Dotenv
    
    jurgenhaas's avatar
    jurgenhaas committed
      protected Dotenv $env;
    
      /**
       * Handler constructor.
       *
       * @param \Composer\Composer $composer
       *   The composer object of this session.
       * @param \Composer\IO\IOInterface $io
       *   The input-output object of the composer session.
       */
      public function __construct(Composer $composer, IOInterface $io) {
        $this->composer = $composer;
        $this->io = $io;
    
      }
    
      /**
       * Initialize configuration.
       */
      protected function init(): void {
    
        if (!isset($this->config)) {
    
          $this->env = new Dotenv($this->configId(), $this->io);
          $this->config = new Config($this->configId(), $this->configDefault(), $this->env);
          $this->postInit();
        }
    
    jurgenhaas's avatar
    jurgenhaas committed
       * Provides the default config array.
       *
    
    jurgenhaas's avatar
    jurgenhaas committed
       *   The default config array.
    
       */
      protected function configDefault(): array {
        return [];
    
      /**
       * May be overwritten by implementing classes.
       */
      protected function postInit(): void {}
    
    
    jurgenhaas's avatar
    jurgenhaas committed
       * Provides the config object.
       *
    
       * @return \LakeDrops\Component\Composer\Config
    
    jurgenhaas's avatar
    jurgenhaas committed
       *   The config object.
    
       */
      public function getConfig(): Config {
        $this->init();
        return $this->config;
      }
    
    
      /**
       * {@inheritdoc}
       */
    
    jurgenhaas's avatar
    jurgenhaas committed
      public function setEvent(Event $event): self {
    
        $this->event = $event;
        return $this;
      }
    
      /**
       * {@inheritdoc}
       */
    
      public function setInput(InputInterface $input): BaseHandler {
    
    jurgenhaas's avatar
    jurgenhaas committed
        $this->consoleInput = $input;
    
       * {@inheritdoc}
    
    jurgenhaas's avatar
    jurgenhaas committed
      public function getDrupalCorePackage(): ?PackageInterface {
    
        if (!isset($this->drupalCorePackage)) {
          $this->drupalCorePackage = $this->getPackage('drupal/core');
        }
        return $this->drupalCorePackage;
      }
    
      /**
    
       * {@inheritdoc}
    
      public function getPackage(string $name): ?PackageInterface {
    
        return $this->composer->getRepositoryManager()->getLocalRepository()->findPackage($name, '*');
      }
    
    
      /**
       * {@inheritdoc}
       */
    
        if (isset($this->event)) {
    
          return $this->event->isDevMode();
        }
    
        if (isset($this->consoleInput)) {
    
    jurgenhaas's avatar
    jurgenhaas committed
          return !$this->consoleInput->hasOption('no-dev');
    
      /**
       * {@inheritdoc}
       */
    
      public function isLocalDevMode(): bool {
    
        $local_dev_mode = getenv('LAKEDROPS_DEV_ENV');
        return !empty($local_dev_mode);
      }
    
    
       * {@inheritdoc}
       */
    
      public function isCiContext(): bool {
    
        $ci_project_dir = getenv('CI_PROJECT_DIR');
    
        return !empty($ci_project_dir);
    
      }
    
      /**
       * {@inheritdoc}
    
      public function git(string $command, string $path = NULL): void {
        Utils::git($command, $path);
    
      public function gitIgnore(string $pattern): void {
    
    jurgenhaas's avatar
    jurgenhaas committed
       *
       * @phpcs:disable Squiz.NamingConventions.VaildMethodName.NotCamelCaps
    
    jurgenhaas's avatar
    jurgenhaas committed
      public function gitLfs(string $pattern): void {
        Utils::gitLfs($pattern);