Class Manifest
- Namespace
- ZeroInstall.Store.Manifests
- Assembly
- ZeroInstall.Store.dll
A manifest lists every directory, file and symlink in a directory and contains a digest of each file's content.
[Serializable]
public sealed class Manifest : IReadOnlyDictionary<string, IDictionary<string, ManifestElement>>, IReadOnlyCollection<KeyValuePair<string, IDictionary<string, ManifestElement>>>, IEnumerable<KeyValuePair<string, IDictionary<string, ManifestElement>>>, IEnumerable
- Inheritance
-
Manifest
- Implements
- Inherited Members
Remarks
Constructors
Manifest(ManifestFormat)
Creates a new manifest.
public Manifest(ManifestFormat format)
Parameters
formatManifestFormatThe format used to calculate digests, also specifies the algorithm used in Digest.
Fields
ManifestFile
The well-known file name used to store manifest files in directories.
public const string ManifestFile = ".manifest"
Field Value
Properties
Count
Gets the number of elements in the collection.
public int Count { get; }
Property Value
- int
The number of elements in the collection.
Format
The format of the manifest (which file details are listed, which digest method is used, etc.).
public ManifestFormat Format { get; }
Property Value
this[string]
Gets or adds directory in the manifest.
public IDictionary<string, ManifestElement> this[string key] { get; }
Parameters
Property Value
Keys
Gets an enumerable collection that contains the keys in the read-only dictionary.
public IEnumerable<string> Keys { get; }
Property Value
- IEnumerable<string>
An enumerable collection that contains the keys in the read-only dictionary.
Lines
The directories and ManifestElements comprising the manifest in line format.
public IEnumerable<string> Lines { get; }
Property Value
TotalSize
The combined size of all files listed in the manifest in bytes.
public long TotalSize { get; }
Property Value
Values
Gets an enumerable collection that contains the values in the read-only dictionary.
public IEnumerable<IDictionary<string, ManifestElement>> Values { get; }
Property Value
- IEnumerable<IDictionary<string, ManifestElement>>
An enumerable collection that contains the values in the read-only dictionary.
Methods
Add(string)
Returns an existing directory or adds a new directory (and any missing parents) to the manifest.
public SortedDictionary<string, ManifestElement> Add(string key)
Parameters
keystringThe Unix path of the directory relative to the implementation root.
Returns
- SortedDictionary<string, ManifestElement>
A dictionary of elements inside the directory.
CalculateDigest()
Calculates the digest for the manifest in-memory.
public string CalculateDigest()
Returns
- string
The manifest digest.
ContainsKey(string)
Determines whether the read-only dictionary contains an element that has the specified key.
public bool ContainsKey(string key)
Parameters
keystringThe key to locate.
Returns
- bool
true if the read-only dictionary contains an element that has the specified key; otherwise, false.
Exceptions
- ArgumentNullException
keyis null.
Load(Stream, ManifestFormat)
Parses a manifest file stream.
public static Manifest Load(Stream stream, ManifestFormat format)
Parameters
streamStreamThe stream to load from.
formatManifestFormatThe format of the file and the format of the created Manifest. Comprises the digest method used and the file's format.
Returns
- Manifest
The parsed content of the file.
Exceptions
- FormatException
The file specified is not a valid manifest file.
Load(string, ManifestFormat)
Parses a manifest file.
public static Manifest Load(string path, ManifestFormat format)
Parameters
pathstringThe path of the file to load.
formatManifestFormatThe format of the file and the format of the created Manifest. Comprises the digest method used and the file's format.
Returns
- Manifest
The parsed content of the file.
Exceptions
- FormatException
The file specified is not a valid manifest file.
- IOException
The manifest file could not be read.
- UnauthorizedAccessException
Read access to the file is not permitted.
RejectPath(string)
Determines whether a file path may not be used in implementations.
public static bool RejectPath(string path)
Parameters
pathstring
Returns
Remove(string)
Removes a directory and all its subdirectories from the manifest.
public bool Remove(string key)
Parameters
keystringThe Unix path of the directory relative to the implementation root.
Returns
- bool
trueif the directory is successfully found and removed;falseotherwise.
Rename(string, string)
Moves a directory and all its subdirectories to a new path.
public bool Rename(string key, string newKey)
Parameters
keystringThe Unix path of the directory relative to the implementation root.
newKeystringThe new Unix path of the directory relative to the implementation root.
Returns
- bool
trueif the directory is successfully found and renamed;falseotherwise.
Save(string)
Writes the manifest to a file.
public void Save(string path)
Parameters
pathstringThe path of the file to write.
Exceptions
- IOException
A problem occurred while writing the file.
- UnauthorizedAccessException
Write access to the file is not permitted.
ToString()
The directories and ManifestElements comprising the manifest in line format. Safe for parsing.
public override string ToString()
Returns
TryGetValue(string, out IDictionary<string, ManifestElement>?)
Gets the value that is associated with the specified key.
public bool TryGetValue(string key, out IDictionary<string, ManifestElement>? value)
Parameters
keystringThe key to locate.
valueIDictionary<string, ManifestElement>When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the
valueparameter. This parameter is passed uninitialized.
Returns
- bool
true if the object that implements the IReadOnlyDictionary<TKey, TValue> interface contains an element that has the specified key; otherwise, false.
Exceptions
- ArgumentNullException
keyis null.
TryLoad(string, ManifestFormat)
Tries to parse a manifest file.
public static Manifest? TryLoad(string path, ManifestFormat format)
Parameters
pathstringThe path of the file to load.
formatManifestFormatThe format of the file and the format of the created Manifest. Comprises the digest method used and the file's format.
Returns
- Manifest
The parsed content of the file;
nullif the file does not exits or has invalid content.
Exceptions
- IOException
The manifest file could not be read.
- UnauthorizedAccessException
Read access to the file is not permitted.
WithOffset(TimeSpan)
Creates a copy of the manifest with all timestamps shifted by the specified offset and rounded up to an even number of seconds.
public Manifest WithOffset(TimeSpan offset)
Parameters
offsetTimeSpan