1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
use git2::TreeEntry;

/// A friendly interface to a 'directory' in git, which is a snapshot of a node in the
/// working tree at a specific commit which would be mapped to a file system directory
/// by a Git client, which is a flat, single level of a subtree. The directory and file nodes
/// are split into two separate lists and sorted in UTF-8 codepoint order.
pub struct GitDirectory<'repo> {
    /// The list of directories in this directory, sorted in UTF-8 codepoint order.
    pub dirs: Vec<DirectoryEntry<'repo>>,

    /// The list of files in this directory, sorted in UTF-8 codepoint order.
    pub files: Vec<DirectoryEntry<'repo>>,
}

/// A simple struct for a `TreeEntry` prepackaged with it's name for easier use.
pub struct DirectoryEntry<'repo> {
    /// The file/directory name, without any relative or absolute paths.
    pub name: String,

    /// The `TreeEntry` with this name.
    pub node: TreeEntry<'repo>,
}