]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - includes/libs/composer/ComposerJson.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / includes / libs / composer / ComposerJson.php
diff --git a/includes/libs/composer/ComposerJson.php b/includes/libs/composer/ComposerJson.php
new file mode 100644 (file)
index 0000000..62231a8
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Reads a composer.json file and provides accessors to get
+ * its hash and the required dependencies
+ *
+ * @since 1.25
+ */
+class ComposerJson {
+
+       /**
+        * @param string $location
+        */
+       public function __construct( $location ) {
+               $this->contents = json_decode( file_get_contents( $location ), true );
+       }
+
+       /**
+        * Dependencies as specified by composer.json
+        *
+        * @return array
+        */
+       public function getRequiredDependencies() {
+               $deps = [];
+               if ( isset( $this->contents['require'] ) ) {
+                       foreach ( $this->contents['require'] as $package => $version ) {
+                               if ( $package !== "php" && strpos( $package, 'ext-' ) !== 0 ) {
+                                       $deps[$package] = self::normalizeVersion( $version );
+                               }
+                       }
+               }
+
+               return $deps;
+       }
+
+       /**
+        * Strip a leading "v" from the version name
+        *
+        * @param string $version
+        * @return string
+        */
+       public static function normalizeVersion( $version ) {
+               if ( strpos( $version, 'v' ) === 0 ) {
+                       // Composer auto-strips the "v" in front of the tag name
+                       $version = ltrim( $version, 'v' );
+               }
+
+               return $version;
+       }
+
+}