pub struct DbFilesV1 {
files: Vec<PathBuf>,
backup: Vec<BackupEntry>,
}Expand description
The representation of alpm-db-files data (version 1).
Fields§
§files: Vec<PathBuf>§backup: Vec<BackupEntry>Implementations§
Source§impl DbFilesV1
impl DbFilesV1
Sourcepub fn backups(&self) -> &[BackupEntry]
pub fn backups(&self) -> &[BackupEntry]
Returns the backup entries tracked for this file listing.
fn try_from_parts( paths: Vec<PathBuf>, backup: Vec<BackupEntry>, ) -> Result<Self, Error>
Trait Implementations§
Source§impl Display for DbFilesV1
impl Display for DbFilesV1
Source§fn fmt(&self, f: &mut Formatter<'_>) -> Result
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Returns the String representation of the DbFilesV1.
§Examples
use std::path::PathBuf;
use alpm_db::files::DbFilesV1;
// An empty alpm-db-files.
let expected = "";
let files = DbFilesV1::try_from(Vec::new())?;
assert_eq!(files.to_string(), expected);
// An alpm-db-files with entries.
let expected = r#"%FILES%
usr/
usr/bin/
usr/bin/foo
"#;
let files = DbFilesV1::try_from(vec![
PathBuf::from("usr/"),
PathBuf::from("usr/bin/"),
PathBuf::from("usr/bin/foo"),
])?;
assert_eq!(files.to_string(), expected);Source§impl FromStr for DbFilesV1
impl FromStr for DbFilesV1
Source§fn from_str(s: &str) -> Result<Self, Self::Err>
fn from_str(s: &str) -> Result<Self, Self::Err>
Creates a new DbFilesV1 from a string slice.
§Note
Delegates to the TryFrom Vec of PathBuf implementation, after the string slice
has been parsed as a Vec of PathBuf.
§Errors
Returns an error, if
valueis not empty and the first line does not contain the section header (“%FILES%”),- there are lines following the section header, but they cannot be parsed as a
VecofPathBuf, - or
Self::try_fromVecofPathBuffails.
§Examples
use std::{path::PathBuf, str::FromStr};
use alpm_db::files::DbFilesV1;
use winnow::Parser;
// No files according to alpm-db-files.
let data = "";
let files = DbFilesV1::from_str(data)?;
// No files according to alpm-db-files.
let data = "%FILES%";
let files = DbFilesV1::from_str(data)?;
let data = "%FILES%\n";
let files = DbFilesV1::from_str(data)?;
// DbFiles according to alpm-db-files.
let data = r#"%FILES%
usr/
usr/bin/
usr/bin/foo"#;
let files = DbFilesV1::from_str(data)?;
// DbFiles according to alpm-db-files.
let data = r#"%FILES%
usr/
usr/bin/
usr/bin/foo
"#;
let files = DbFilesV1::from_str(data)?;Source§impl TryFrom<PathBuf> for DbFilesV1
impl TryFrom<PathBuf> for DbFilesV1
Source§fn try_from(value: PathBuf) -> Result<Self, Self::Error>
fn try_from(value: PathBuf) -> Result<Self, Self::Error>
Creates a new DbFilesV1 from all files and directories in a directory.
§Note
Delegates to [alpm_common::relative_files] to get a sorted list of all files and
directories in the directory value (relative to value).
Afterwards, tries to construct a DbFilesV1 from this list.
§Errors
Returns an error if
§Examples
use std::{
fs::{File, create_dir_all},
path::PathBuf,
};
use alpm_db::files::DbFilesV1;
use tempfile::tempdir;
let temp_dir = tempdir()?;
let path = temp_dir.path();
create_dir_all(path.join("usr/bin/"))?;
File::create(path.join("usr/bin/foo"))?;
let files = DbFilesV1::try_from(path.to_path_buf())?;
assert_eq!(
files.as_ref(),
vec![
PathBuf::from("usr/"),
PathBuf::from("usr/bin/"),
PathBuf::from("usr/bin/foo")
]
);Source§impl TryFrom<Vec<PathBuf>> for DbFilesV1
impl TryFrom<Vec<PathBuf>> for DbFilesV1
Source§fn try_from(value: Vec<PathBuf>) -> Result<Self, Self::Error>
fn try_from(value: Vec<PathBuf>) -> Result<Self, Self::Error>
Creates a new DbFilesV1 from a Vec of PathBuf.
The provided value is sorted and checked for non top-level paths without a parent, as well
as any duplicate paths.
§Errors
Returns an error if
valuecontains absolute paths,valuecontains (non top-level) paths without a parent directory present invalue,- or
valuecontains duplicate paths.
§Examples
use std::path::PathBuf;
use alpm_db::files::DbFilesV1;
let paths: Vec<PathBuf> = vec![
PathBuf::from("usr/"),
PathBuf::from("usr/bin/"),
PathBuf::from("usr/bin/foo"),
];
let files = DbFilesV1::try_from(paths)?;
// Absolute paths are not allowed.
let paths: Vec<PathBuf> = vec![
PathBuf::from("/usr/"),
PathBuf::from("/usr/bin/"),
PathBuf::from("/usr/bin/foo"),
];
assert!(DbFilesV1::try_from(paths).is_err());
// Every path (excluding top-level paths) must have a parent.
let paths: Vec<PathBuf> = vec![PathBuf::from("usr/bin/"), PathBuf::from("usr/bin/foo")];
assert!(DbFilesV1::try_from(paths).is_err());
// Every path must be unique.
let paths: Vec<PathBuf> = vec![
PathBuf::from("usr/"),
PathBuf::from("usr/"),
PathBuf::from("usr/bin/"),
PathBuf::from("usr/bin/foo"),
];
assert!(DbFilesV1::try_from(paths).is_err());