Capstone.Manifest.FileEntry (Capstone v0.33.3)

Copy Markdown View Source

One file a plugin owns or contributes to (SDD 7.3).

mode and key are exclusive. :contributes names one block inside a file the plugin shares with others, and :manual names a hunk that cannot be appended safely and is applied as conflict markers instead. Both are positional inside a file someone else owns, so both REQUIRE a key. :sole_owner and :seed take the whole file and must carry none. A nil key is omitted from the encoded entry rather than written as key: nil, so the bytes match SDD 8.2 exactly.

:manual extends SDD 7.3's three modes. It is not a phantom class like :overwritable: apply acts on it by writing markers and mix capstone.check acts on it by failing while one remains.

There is no :overwritable mode. It is SDD 4.1 defect 5/6 — a mode nothing downstream can act on — and it appears here only as a value the last clause of validate!/1 rejects, so it can never become a phantom class.

Summary

Types

How a plugin owns this file — see the moduledoc for what each value means.

t()

Types

mode()

@type mode() :: :sole_owner | :contributes | :seed | :manual

How a plugin owns this file — see the moduledoc for what each value means.

t()

@type t() :: %Capstone.Manifest.FileEntry{
  hash: String.t(),
  key: atom() | nil,
  mode: mode(),
  path: String.t()
}