export module cargoxx.manifest; import std; import cargoxx.util; export namespace cargoxx::manifest { struct Dependency { std::string name; std::string version_spec; std::vector components; }; struct BuildSettings { bool warnings_as_errors = false; std::vector sanitizers; }; enum class Edition { Cpp20, Cpp23, Cpp26 }; struct Package { std::string name; std::string version; Edition edition = Edition::Cpp23; std::vector authors; std::optional license; }; struct Manifest { Package package; std::vector dependencies; BuildSettings build; }; auto parse(const std::filesystem::path& path) -> util::Result; } // namespace cargoxx::manifest