#pragma once #include "metadata.hpp" #include #include #include #include #include #include class Manifest { public: Manifest(); ~Manifest(); const std::vector>& getIgnores() const; const std::vector& getTestPaths() const; const std::string& getTestRootPath() const; const std::string& getManifestPath() const; void doShuffle(uint32_t seed); std::string localizeURL(const std::string& url) const; void localizeSourceURLs(mbgl::JSValue& root, mbgl::JSDocument& document) const; void localizeStyleURLs(mbgl::JSValue& root, mbgl::JSDocument& document) const; private: friend class ManifestParser; mbgl::optional localizeLocalURL(const std::string& url, bool glyphsPath = false) const; mbgl::optional localizeHttpURL(const std::string& url) const; mbgl::optional localizeMapboxSpriteURL(const std::string& url) const; mbgl::optional localizeMapboxFontsURL(const std::string& url) const; mbgl::optional localizeMapboxTilesURL(const std::string& url) const; mbgl::optional localizeMapboxTilesetURL(const std::string& url) const; mbgl::optional getVendorPath(const std::string& url, const std::regex& regex, bool glyphsPath = false) const; mbgl::optional getIntegrationPath(const std::string& url, const std::string& parent, const std::regex& regex, bool glyphsPath = false) const; std::string manifestPath; std::string testRootPath; std::string vendorPath; std::string assetPath; std::vector> ignores; std::vector testPaths; }; class ManifestParser { public: static mbgl::optional parseManifest(const std::string& manifestPath, const std::vector& testNames, const std::string& testFilter); };