package swhid_core

  1. Overview
  2. Docs

A functor that, given a SHA1 module and a OS module, provides various functions to compute the swhid of a given object. Supported objects are content, directory, release, revision and snapshot. The origins and visits objects are not supported.

Parameters

module SHA1 : sig ... end
module OS : sig ... end

Signature

type directory_entry = {
  1. typ : directory_entry_kind;
  2. permissions : int;
  3. name : string;
  4. target : Object.Core_identifier.t;
}

The type for directory entries list, needed to compute directories identifiers.

type date = {
  1. timestamp : Int64.t;
  2. tz_offset : int;
  3. negative_utc : bool;
}

The type for dates, needed to compute releases and revisions identifiers.

val content_identifier : string -> (Object.t, string) result

content_identifier s computes the swhid for the s content. s is the raw content of a file as a string.

E.g. content_identifier "_build\n" is the swhid of this library's .gitignore file.

val directory_identifier : directory_entry list -> (Object.t, string) result

directory_identifier entries compute the swhid for the entries directory. entries is a list of Kinds.directory_entry where each element points to another object (usually a file content or a sub-directory).

E.g. directory_identifier [ { typ = "file" ; permissions = 33188 ; name = "README" ; target = "37ec8ea2110c0b7a32fbb0e872f6e7debbf95e21" }] is the swhid of a directory which has a single file README with permissions 33188 and whose core identifier from content_identifier is 37ec8ea2110c0b7a32fbb0e872f6e7debbf95e21.

val directory_identifier_deep : string -> (Object.t, string) result

directory_identifier_deep compute the swhid for a given directory name, it uses the various functions provided in the OS module parameter to list directory contents, get file permissions and read file contents.

val release_identifier : Object.Hash.t -> Object.Kind.t -> name:string -> author:string option -> date option -> message:string option -> (Object.t, string) result

release_identifier target target_kind name ~author date ~message computes the swhid for a release object pointing to an object of type target_kind whose identifier is target, the release having ~name, ~author and has been published on date with the release ~message.

val revision_identifier : Object.Hash.t -> Object.Hash.t list -> author:string -> author_date:date option -> committer:string -> committer_date:date option -> (string * string) array -> message:string option -> (Object.t, string) result

revision dir parents ~author ~author_date ~committer ~committer_date extra_headers message computes the swhid for a revision object whose directory has id dir and whose parents has ids parents which was authored by ~author on ~author_date and committed by ~committer on ~committer_date with extra headers extra_headers and message message.

val snapshot_identifier : (string * (string * string) option) list -> (Object.t, string) result

snapshot_identifier branches computes the swhid of the snapshot made of branches branches where branches is a list of branch elements. Each branch is of the form name, target where name is the name of the branch and where target is a pair made of the identifier of the branch and its type.

OCaml

Innovation. Community. Security.