Chris@14: , Sebastian Heuer , Sebastian Bergmann Chris@14: * Chris@14: * For the full copyright and license information, please view the LICENSE Chris@14: * file that was distributed with this source code. Chris@14: */ Chris@14: Chris@14: namespace PharIo\Manifest; Chris@14: Chris@14: class ManifestLoader { Chris@14: /** Chris@14: * @param string $filename Chris@14: * Chris@14: * @return Manifest Chris@14: * Chris@14: * @throws ManifestLoaderException Chris@14: */ Chris@14: public static function fromFile($filename) { Chris@14: try { Chris@14: return (new ManifestDocumentMapper())->map( Chris@14: ManifestDocument::fromFile($filename) Chris@14: ); Chris@14: } catch (Exception $e) { Chris@14: throw new ManifestLoaderException( Chris@14: sprintf('Loading %s failed.', $filename), Chris@14: $e->getCode(), Chris@14: $e Chris@14: ); Chris@14: } Chris@14: } Chris@14: Chris@14: /** Chris@14: * @param string $filename Chris@14: * Chris@14: * @return Manifest Chris@14: * Chris@14: * @throws ManifestLoaderException Chris@14: */ Chris@14: public static function fromPhar($filename) { Chris@14: return self::fromFile('phar://' . $filename . '/manifest.xml'); Chris@14: } Chris@14: Chris@14: /** Chris@14: * @param string $manifest Chris@14: * Chris@14: * @return Manifest Chris@14: * Chris@14: * @throws ManifestLoaderException Chris@14: */ Chris@14: public static function fromString($manifest) { Chris@14: try { Chris@14: return (new ManifestDocumentMapper())->map( Chris@14: ManifestDocument::fromString($manifest) Chris@14: ); Chris@14: } catch (Exception $e) { Chris@14: throw new ManifestLoaderException( Chris@14: 'Processing string failed', Chris@14: $e->getCode(), Chris@14: $e Chris@14: ); Chris@14: } Chris@14: } Chris@14: }