diff --git a/res/composer-schema.json b/res/composer-schema.json
index d35591a1c..322ccccd1 100644
--- a/res/composer-schema.json
+++ b/res/composer-schema.json
@@ -191,6 +191,37 @@
"description": "Occurs after a package has been uninstalled, contains one or more Class::method callables."
}
}
+ },
+ "support": {
+ "type": "object",
+ "additionalProperties": true,
+ "properties": {
+ "email": {
+ "type": "string",
+ "description": "Email address of the community.",
+ "format": "email"
+ },
+ "issues": {
+ "type": "string",
+ "description": "URL to the Issue Tracker.",
+ "format": "uri"
+ },
+ "forum": {
+ "type": "string",
+ "description": "URL to the Forum.",
+ "format": "uri"
+ },
+ "wiki": {
+ "type": "string",
+ "description": "URL to the Wiki.",
+ "format": "uri"
+ },
+ "irc": {
+ "type": "string",
+ "description": "Irc support channel"
+ }
+ }
}
+
}
}
diff --git a/src/Composer/Command/ShowCommand.php b/src/Composer/Command/ShowCommand.php
index 042ff420b..786caab55 100644
--- a/src/Composer/Command/ShowCommand.php
+++ b/src/Composer/Command/ShowCommand.php
@@ -159,6 +159,13 @@ EOT
$output->writeln('dist : ' . sprintf('[%s] %s %s', $package->getDistType(), $package->getDistUrl(), $package->getDistReference()));
$output->writeln('names : ' . implode(', ', $package->getNames()));
+ if ($package->getSupport()) {
+ $output->writeln("\nsupport");
+ foreach ($package->getSupport() as $type => $url) {
+ $output->writeln('' . $type . ' : '.$url);
+ }
+ }
+
if ($package->getAutoload()) {
$output->writeln("\nautoload");
foreach ($package->getAutoload() as $type => $autoloads) {
diff --git a/src/Composer/Package/AliasPackage.php b/src/Composer/Package/AliasPackage.php
index 1b6481d8e..b94745582 100644
--- a/src/Composer/Package/AliasPackage.php
+++ b/src/Composer/Package/AliasPackage.php
@@ -266,6 +266,10 @@ class AliasPackage extends BasePackage
{
return $this->aliasOf->getAuthors();
}
+ public function getSupport()
+ {
+ return $this->aliasOf->getSupport();
+ }
public function __toString()
{
return parent::__toString().' (alias of '.$this->aliasOf->getVersion().')';
diff --git a/src/Composer/Package/Loader/ArrayLoader.php b/src/Composer/Package/Loader/ArrayLoader.php
index 001fa2e25..2fe85048e 100644
--- a/src/Composer/Package/Loader/ArrayLoader.php
+++ b/src/Composer/Package/Loader/ArrayLoader.php
@@ -171,6 +171,10 @@ class ArrayLoader
$package->setAutoload($config['autoload']);
}
+ if (isset($config['support'])) {
+ $package->setSupport($config['support']);
+ }
+
return $package;
}
diff --git a/src/Composer/Package/MemoryPackage.php b/src/Composer/Package/MemoryPackage.php
index 2c3502502..b8ad5a916 100644
--- a/src/Composer/Package/MemoryPackage.php
+++ b/src/Composer/Package/MemoryPackage.php
@@ -56,6 +56,7 @@ class MemoryPackage extends BasePackage
protected $recommends = array();
protected $suggests = array();
protected $autoload = array();
+ protected $support = array();
/**
* Creates a new in memory package.
@@ -623,4 +624,24 @@ class MemoryPackage extends BasePackage
{
return $this->autoload;
}
+
+ /**
+ * Set the support information
+ *
+ * @param array $support
+ */
+ public function setSupport(array $support)
+ {
+ $this->support = $support;
+ }
+
+ /**
+ * Returns the support information
+ *
+ * @return array
+ */
+ public function getSupport()
+ {
+ return $this->support;
+ }
}