plugify 1.2.8
Loading...
Searching...
No Matches
manifest.hpp
1#pragma once
2
3#include <filesystem>
4#include <string>
5#include <unordered_map>
6
7#include "plugify/conflict.hpp"
8#include "plugify/dependency.hpp"
9#include "plugify/global.h"
10#include "plugify/method.hpp"
11
12namespace plugify {
13 // Unified Manifest (combines all fields)
14 struct Manifest {
15 // Common fields
16 std::string name;
17 Version version;
18 std::string language;
19 std::optional<std::string> description;
20 std::optional<std::string> author;
21 std::optional<std::string> website;
22 std::optional<std::string> license;
23
24 // Dependencies and conflicts
25 std::optional<std::vector<std::string>> platforms;
26 std::optional<std::vector<Dependency>> dependencies;
27 std::optional<std::vector<Conflict>> conflicts;
28 std::optional<std::vector<Obsolete>> obsoletes;
29
30 // Plugin-specific fields (only used when type == Plugin)
31 std::optional<std::string> entry;
32 std::optional<std::vector<Method>> methods;
33
34 // Module-specific fields (only used when type == Module)
35 std::optional<std::filesystem::path> runtime;
36 std::optional<std::vector<std::filesystem::path>> directories;
37
38 [[nodiscard]] Result<void> Validate() const;
39 };
40
41}