NAH 1.0.6
Native Application Host - Library API Reference
Loading...
Searching...
No Matches
manifest.hpp
Go to the documentation of this file.
1#pragma once
2
4#include "nah/semver.hpp"
5
6#include <cstdint>
7#include <string>
8#include <vector>
9#include <optional>
10
11namespace nah {
12
14 bool ok;
16 std::string error;
17 std::vector<TLVEntry> entries;
18 std::vector<std::string> warnings;
19};
20
21// Parse a manifest blob (header + TLV payload). Verifies magic, total_size, and CRC32 over the
22// payload. CRC mismatch is treated as manifest missing (critical). Structural invalidities emit
23// warnings and drop only invalid fields.
24ManifestParseResult parse_manifest_blob(const std::vector<uint8_t>& blob);
25
26struct Manifest {
27 std::string id;
28 std::string version; // raw string
29 std::string nak_id;
30 std::optional<VersionRange> nak_version_req;
31 std::string entrypoint_path;
32 std::vector<std::string> entrypoint_args;
33 std::vector<std::string> env_vars;
34 std::vector<std::string> lib_dirs;
35 std::vector<std::string> asset_dirs;
36 std::vector<AssetExportParts> asset_exports;
37 std::vector<std::string> permissions_filesystem;
38 std::vector<std::string> permissions_network;
39};
40
42 bool ok;
44 std::string error;
46 std::vector<std::string> warnings;
47};
48
49// High-level manifest parser that decodes the blob and extracts canonical fields.
50ManifestFieldsResult parse_manifest(const std::vector<uint8_t>& blob);
51
52} // namespace nah
Result type for fallible operations.
Definition nahhost.hpp:109
ManifestFieldsResult parse_manifest(const std::vector< uint8_t > &blob)
ManifestParseResult parse_manifest_blob(const std::vector< uint8_t > &blob)
Semantic Versioning 2.0.0 support.
std::vector< std::string > warnings
Definition manifest.hpp:46
std::vector< std::string > warnings
Definition manifest.hpp:18
std::vector< TLVEntry > entries
Definition manifest.hpp:17
std::string nak_id
Definition manifest.hpp:29
std::vector< std::string > asset_dirs
Definition manifest.hpp:35
std::vector< std::string > entrypoint_args
Definition manifest.hpp:32
std::string version
Definition manifest.hpp:28
std::vector< std::string > env_vars
Definition manifest.hpp:33
std::vector< std::string > permissions_network
Definition manifest.hpp:38
std::string id
Definition manifest.hpp:27
std::vector< AssetExportParts > asset_exports
Definition manifest.hpp:36
std::vector< std::string > lib_dirs
Definition manifest.hpp:34
std::string entrypoint_path
Definition manifest.hpp:31
std::vector< std::string > permissions_filesystem
Definition manifest.hpp:37
std::optional< VersionRange > nak_version_req
Definition manifest.hpp:30