Version 1
[yaffs-website] / vendor / composer / installers / src / Composer / Installers / OxidInstaller.php
diff --git a/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php b/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php
new file mode 100644 (file)
index 0000000..49940ff
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+namespace Composer\Installers;
+
+use Composer\Package\PackageInterface;
+
+class OxidInstaller extends BaseInstaller
+{
+       const VENDOR_PATTERN = '/^modules\/(?P<vendor>.+)\/.+/';
+
+    protected $locations = array(
+        'module'    => 'modules/{$name}/',
+        'theme'  => 'application/views/{$name}/',
+        'out'    => 'out/{$name}/',
+    );
+
+       /**
+        * getInstallPath
+        *
+        * @param PackageInterface $package
+        * @param string $frameworkType
+        * @return void
+        */
+       public function getInstallPath(PackageInterface $package, $frameworkType = '')
+       {
+               $installPath = parent::getInstallPath($package, $frameworkType);
+               $type = $this->package->getType();
+               if ($type === 'oxid-module') {
+                       $this->prepareVendorDirectory($installPath);
+               }
+               return $installPath;
+       }
+
+       /**
+        * prepareVendorDirectory
+        *
+        * Makes sure there is a vendormetadata.php file inside
+        * the vendor folder if there is a vendor folder.
+        *
+        * @param string $installPath
+        * @return void
+        */
+       protected function prepareVendorDirectory($installPath)
+       {
+               $matches = '';
+               $hasVendorDirectory = preg_match(self::VENDOR_PATTERN, $installPath, $matches);
+               if (!$hasVendorDirectory) {
+                       return;
+               }
+
+               $vendorDirectory = $matches['vendor'];
+               $vendorPath = getcwd() . '/modules/' . $vendorDirectory;
+               if (!file_exists($vendorPath)) {
+                       mkdir($vendorPath, 0755, true);
+               }
+
+               $vendorMetaDataPath = $vendorPath . '/vendormetadata.php';
+               touch($vendorMetaDataPath);
+       }
+}