kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

manifest.h (1931B)


      1 #ifndef KIT_DIST_MANIFEST_H
      2 #define KIT_DIST_MANIFEST_H
      3 
      4 #include <kit/core.h>
      5 #include <stddef.h>
      6 #include <stdint.h>
      7 
      8 #include "dist.h"
      9 
     10 /* The signed logical package object for distribution. The physical encodings
     11  * (.tar.gz and .kpkg) both carry these literal bytes and the same detached
     12  * minisign signature. */
     13 
     14 #define DIST_PACKAGE3_MAGIC "kit-package 3"
     15 #define DIST_PACKAGE3_HASH "blake2b-256"
     16 #define DIST_PACKAGE3_TREE_FORMAT "kit-tree-v1"
     17 #define DIST_PACKAGE3_BLOB_FORMAT "kit-blob-v1"
     18 
     19 typedef struct DistPackageOutput {
     20   uint64_t id;
     21   char name[DIST_NAME_MAX];
     22   char target[DIST_TRIPLE_MAX]; /* "" = target-independent */
     23   uint8_t tree[DIST_BLAKE2B_LEN];
     24   int is_default;
     25 } DistPackageOutput;
     26 
     27 typedef struct DistPackageArtifact {
     28   uint64_t output_id;
     29   char path[DIST_PATH_MAX + 1];
     30   char kind[DIST_KIND_MAX];
     31   int entry;
     32 } DistPackageArtifact;
     33 
     34 typedef struct DistPackageDependency {
     35   char name[DIST_NAME_MAX];
     36   char version[DIST_PCONSTRAINT_MAX];
     37   uint8_t package[DIST_BLAKE2B_LEN];
     38   int has_package;
     39   uint8_t keyid[DIST_KEYID_LEN];
     40   int has_keyid;
     41 } DistPackageDependency;
     42 
     43 typedef struct DistPackageManifest {
     44   char name[DIST_NAME_MAX];
     45   char version[DIST_VERSION_MAX];
     46   char description[DIST_DESC_MAX]; /* "" = absent */
     47   DistPackageOutput outputs[DIST_MAX_OUTPUTS];
     48   size_t n_outputs;
     49   DistPackageArtifact artifacts[DIST_MAX_ARTIFACTS];
     50   size_t n_artifacts;
     51   DistPackageDependency deps[DIST_MAX_DEPS];
     52   size_t n_deps;
     53 } DistPackageManifest;
     54 
     55 int dist_manifest_path_valid(const char* path);
     56 
     57 int dist_package_manifest_emit(const DistPackageManifest* m, KitWriter* out);
     58 int dist_package_manifest_parse(const uint8_t* data, size_t len,
     59                                 DistPackageManifest* m, char* err,
     60                                 size_t errcap);
     61 int dist_package_manifest_validate(const DistPackageManifest* m, char* err,
     62                                    size_t errcap);
     63 
     64 #endif