Index: tools/installer/tags/0.1.0
===================================================================
--- tools/installer/tags/0.1.0	(revision 25052)
+++ tools/installer/tags/0.1.0	(working copy)

Property changes on: tools/installer/tags/0.1.0
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,3 ##
+vendor
+composer.lock
+
Index: tools/installer/tags/0.1.0/src/WordPress/Composer/Installer.php
===================================================================
--- tools/installer/tags/0.1.0/src/WordPress/Composer/Installer.php	(revision 0)
+++ tools/installer/tags/0.1.0/src/WordPress/Composer/Installer.php	(working copy)
@@ -0,0 +1,53 @@
+<?php
+
+namespace WordPress\Composer;
+
+use Composer\Installer\LibraryInstaller;
+use Composer\Package\PackageInterface;
+
+class Installer extends LibraryInstaller {
+
+	const TYPE = 'wordpress-core';
+
+	private static $_installedPaths = array();
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public function getInstallPath( PackageInterface $package ) {
+		$installationDir = false;
+		$prettyName      = $package->getPrettyName();
+		if ( $this->composer->getPackage() ) {
+			$topExtra = $this->composer->getPackage()->getExtra();
+			if ( ! empty( $topExtra['wordpress-install-dir'] ) ) {
+				$installationDir = $topExtra['wordpress-install-dir'];
+				if ( is_array( $installationDir ) ) {
+					$installationDir = empty( $installationDir[$prettyName] ) ? false : $installationDir[$prettyName];
+				}
+			}
+		}
+		$extra = $package->getExtra();
+		if ( ! $installationDir && ! empty( $extra['wordpress-install-dir'] ) ) {
+			$installationDir = $extra['wordpress-install-dir'];
+		}
+		if ( ! $installationDir ) {
+			$installationDir = 'wordpress';
+		}
+		if (
+			! empty( self::$_installedPaths[$installationDir] ) &&
+			$prettyName !== self::$_installedPaths[$installationDir]
+		) {
+			throw new \InvalidArgumentException( 'Two packages cannot share the same directory!' );
+		}
+		self::$_installedPaths[$installationDir] = $prettyName;
+		return $installationDir;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public function supports( $packageType ) {
+		return self::TYPE === $packageType;
+	}
+
+}
Index: tools/installer/tags/0.1.0/composer.json
===================================================================
--- tools/installer/tags/0.1.0/composer.json	(revision 0)
+++ tools/installer/tags/0.1.0/composer.json	(working copy)
@@ -0,0 +1,24 @@
+{
+	"name"             : "wordpress/installer",
+	"description"      : "A custom installer to handle deploying WordPress with composer",
+	"type"             : "composer-installer",
+	"license"          : "GPL-2.0+",
+	"minimum-stability": "dev",
+	"authors"          : [
+		{
+			"name"    : "WordPress Community",
+			"homepage": "http://wordpress.org/about/"
+		}
+	],
+	"autoload"         : {
+		"psr-0": {
+			"WordPress\\Composer\\": "src/"
+		}
+	},
+	"extra"            : {
+		"class": "WordPress\\Composer\\Installer"
+	},
+	"require-dev"      : {
+		"composer/composer": "1.0.*@dev"
+	}
+}
Index: tools/installer/trunk
===================================================================
--- tools/installer/trunk	(revision 25052)
+++ tools/installer/trunk	(working copy)

Property changes on: tools/installer/trunk
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,3 ##
+vendor
+composer.lock
+
Index: tools/installer/trunk/src/WordPress/Composer/Installer.php
===================================================================
--- tools/installer/trunk/src/WordPress/Composer/Installer.php	(revision 0)
+++ tools/installer/trunk/src/WordPress/Composer/Installer.php	(working copy)
@@ -0,0 +1,53 @@
+<?php
+
+namespace WordPress\Composer;
+
+use Composer\Installer\LibraryInstaller;
+use Composer\Package\PackageInterface;
+
+class Installer extends LibraryInstaller {
+
+	const TYPE = 'wordpress-core';
+
+	private static $_installedPaths = array();
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public function getInstallPath( PackageInterface $package ) {
+		$installationDir = false;
+		$prettyName      = $package->getPrettyName();
+		if ( $this->composer->getPackage() ) {
+			$topExtra = $this->composer->getPackage()->getExtra();
+			if ( ! empty( $topExtra['wordpress-install-dir'] ) ) {
+				$installationDir = $topExtra['wordpress-install-dir'];
+				if ( is_array( $installationDir ) ) {
+					$installationDir = empty( $installationDir[$prettyName] ) ? false : $installationDir[$prettyName];
+				}
+			}
+		}
+		$extra = $package->getExtra();
+		if ( ! $installationDir && ! empty( $extra['wordpress-install-dir'] ) ) {
+			$installationDir = $extra['wordpress-install-dir'];
+		}
+		if ( ! $installationDir ) {
+			$installationDir = 'wordpress';
+		}
+		if (
+			! empty( self::$_installedPaths[$installationDir] ) &&
+			$prettyName !== self::$_installedPaths[$installationDir]
+		) {
+			throw new \InvalidArgumentException( 'Two packages cannot share the same directory!' );
+		}
+		self::$_installedPaths[$installationDir] = $prettyName;
+		return $installationDir;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public function supports( $packageType ) {
+		return self::TYPE === $packageType;
+	}
+
+}
Index: tools/installer/trunk/composer.json
===================================================================
--- tools/installer/trunk/composer.json	(revision 0)
+++ tools/installer/trunk/composer.json	(working copy)
@@ -0,0 +1,24 @@
+{
+	"name"             : "wordpress/installer",
+	"description"      : "A custom installer to handle deploying WordPress with composer",
+	"type"             : "composer-installer",
+	"license"          : "GPL-2.0+",
+	"minimum-stability": "dev",
+	"authors"          : [
+		{
+			"name"    : "WordPress Community",
+			"homepage": "http://wordpress.org/about/"
+		}
+	],
+	"autoload"         : {
+		"psr-0": {
+			"WordPress\\Composer\\": "src/"
+		}
+	},
+	"extra"            : {
+		"class": "WordPress\\Composer\\Installer"
+	},
+	"require-dev"      : {
+		"composer/composer": "1.0.*@dev"
+	}
+}
