Commit 02c2e343 authored by Ilya Rassadin's avatar Ilya Rassadin
Browse files

add autoload tuner

parent b3697087
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
@@ -19,6 +19,47 @@
    composer --optimize-autoloader --ignore-platform-reqs --no-scripts --prefer-dist install;
  fi

.tune_autoload_prod: &tune_autoload_prod
  if [ !-e $COMPOSER_INSTALL_DIR/composer.json ] || [ -z "$DOC_ROOT_NAME" ] || [ "$DOC_ROOT_NAME" = "www" ]; then
    echo "No autoload adjustments are needed."
    exit 0
  fi
  cat > fix_composer_autoload.php <<'PHP'
  <?php
  $composerFile = 'composer.json';
  $docRootName = getenv('DOC_ROOT_NAME');
  $json = file_get_contents($composerFile);
  if ($json === false) {
      fwrite(STDERR, "Could not read $composerFile\n");
      exit(1);
  }
  $data = json_decode($json, true);
  if ($data === null) {
      fwrite(STDERR, "Invalid JSON in $composerFile\n");
      exit(1);
  }
  function replace_www($path, $docRootName) {
      if (strpos($path, 'www/') === 0) {
          return $docRootName . '/' . substr($path, 4);
      }
      return $path;
  }
  if (isset($data['autoload']['psr-4'])) {
      foreach ($data['autoload']['psr-4'] as $ns => $path) {
          $data['autoload']['psr-4'][$ns] = replace_www($path, $docRootName);
      }
  }
  if (isset($data['autoload']['files'])) {
      foreach ($data['autoload']['files'] as $i => $file) {
          $data['autoload']['files'][$i] = replace_www($file, $docRootName);
      }
  }
  $newJson = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\n";
  file_put_contents($composerFile, $newJson);
  echo "composer.json updated successfully.\n";
  PHP
  php fix_composer_autoload.php

.build_composer_dev:
  stage: prebuild
  image: registry.cetera.su/boilerplate/docker/php_composer:8.1
@@ -46,6 +87,7 @@
    COMPOSER_INSTALL_DIR: ${CI_PROJECT_DIR}
  script:
    - *run_composer_audit
    - *tune_autoload_prod
    - *run_composer_install_prod
  only:
    refs: