pub enum DbDescFile {
V1(DbDescFileV1),
V2(DbDescFileV2),
}Expand description
A representation of the alpm-db-desc file format.
Tracks all supported schema versions (v1 and v2) of the database description file.
Each variant corresponds to a distinct layout of the format.
Variants§
V1(DbDescFileV1)
The alpm-db-descv1 file format.
V2(DbDescFileV2)
The alpm-db-descv2 file format.
This revision of the file format, adds the %XDATA% section.
Trait Implementations§
Source§impl Clone for DbDescFile
impl Clone for DbDescFile
Source§fn clone(&self) -> DbDescFile
fn clone(&self) -> DbDescFile
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DbDescFile
impl Debug for DbDescFile
Source§impl Display for DbDescFile
impl Display for DbDescFile
Source§fn fmt(&self, f: &mut Formatter<'_>) -> Result
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Returns the textual representation of the DbDescFile in its corresponding
alpm-db-desc format.
Source§impl FromStr for DbDescFile
impl FromStr for DbDescFile
Source§fn from_str(s: &str) -> Result<Self, Self::Err>
fn from_str(s: &str) -> Result<Self, Self::Err>
Creates a DbDescFile from a string slice.
Internally calls DbDescFile::from_str_with_schema with schema set to None.
§Errors
Returns an error if DbDescFile::from_str_with_schema fails.
Source§impl MetadataFile<DbDescSchema> for DbDescFile
impl MetadataFile<DbDescSchema> for DbDescFile
Source§fn from_file_with_schema(
file: impl AsRef<Path>,
schema: Option<DbDescSchema>,
) -> Result<Self, Error>
fn from_file_with_schema( file: impl AsRef<Path>, schema: Option<DbDescSchema>, ) -> Result<Self, Error>
Creates a DbDescFile from a file on disk, optionally validated using a DbDescSchema.
Opens the file and defers to DbDescFile::from_reader_with_schema.
§Examples
use std::{fs::File, io::Write};
use alpm_common::{FileFormatSchema, MetadataFile};
use alpm_db::desc::{DbDescFile, DbDescSchema};
use alpm_types::{SchemaVersion, semver_version::Version};
// Prepare a file with DB desc data (v1)
let (file, desc_data) = {
let desc_data = r#"%NAME%
foo
%VERSION%
1.0.0-1
%BASE%
foo
%DESC%
An example package
%URL%
https://example.org/
%ARCH%
x86_64
%BUILDDATE%
1733737242
%INSTALLDATE%
1733737243
%PACKAGER%
Foobar McFooface <foobar@mcfooface.org>
%SIZE%
123
%VALIDATION%
pgp
"#;
let file = tempfile::NamedTempFile::new()?;
let mut output = File::create(&file)?;
write!(output, "{}", desc_data)?;
(file, desc_data)
};
let db_desc = DbDescFile::from_file_with_schema(
file.path(),
Some(DbDescSchema::V1(SchemaVersion::new(Version::new(1, 0, 0)))),
)?;
assert_eq!(db_desc.to_string(), desc_data);§Errors
Returns an error if:
- the file cannot be opened for reading,
- the contents cannot be parsed into any known
DbDescFilevariant, - or the provided
DbDescSchemadoes not match the contents of the file.
Source§fn from_reader_with_schema(
reader: impl Read,
schema: Option<DbDescSchema>,
) -> Result<Self, Error>
fn from_reader_with_schema( reader: impl Read, schema: Option<DbDescSchema>, ) -> Result<Self, Error>
Creates a DbDescFile from any readable stream, optionally validated using a
DbDescSchema.
Reads the reader to a string buffer and defers to DbDescFile::from_str_with_schema.
§Examples
use std::{fs::File, io::Write};
use alpm_common::MetadataFile;
use alpm_db::desc::{DbDescFile, DbDescSchema};
use alpm_types::{SchemaVersion, semver_version::Version};
// Prepare a reader with DB desc data (v2)
let (reader, desc_data) = {
let desc_data = r#"%NAME%
foo
%VERSION%
1.0.0-1
%BASE%
foo
%DESC%
An example package
%URL%
https://example.org/
%ARCH%
x86_64
%BUILDDATE%
1733737242
%INSTALLDATE%
1733737243
%PACKAGER%
Foobar McFooface <foobar@mcfooface.org>
%SIZE%
123
%VALIDATION%
pgp
%XDATA%
pkgtype=pkg
"#;
let file = tempfile::NamedTempFile::new()?;
let mut output = File::create(&file)?;
write!(output, "{}", desc_data)?;
(File::open(&file.path())?, desc_data)
};
let db_desc = DbDescFile::from_reader_with_schema(
reader,
Some(DbDescSchema::V2(SchemaVersion::new(Version::new(2, 0, 0)))),
)?;
assert_eq!(db_desc.to_string(), desc_data);§Errors
Returns an error if:
- the
readercannot be read to string, - the data cannot be parsed into a known
DbDescFilevariant, - or the provided
DbDescSchemadoes not match the parsed content.
Source§fn from_str_with_schema(
s: &str,
schema: Option<DbDescSchema>,
) -> Result<Self, Error>
fn from_str_with_schema( s: &str, schema: Option<DbDescSchema>, ) -> Result<Self, Error>
Creates a DbDescFile from a string slice, optionally validated using a DbDescSchema.
If schema is None, automatically infers the schema version by inspecting the input
(v1 = no %XDATA% section, v2 = has %XDATA%).
§Examples
use alpm_common::MetadataFile;
use alpm_db::desc::{DbDescFile, DbDescSchema};
use alpm_types::{SchemaVersion, semver_version::Version};
let v1_data = r#"%NAME%
foo
%VERSION%
1.0.0-1
%BASE%
foo
%DESC%
An example package
%URL%
https://example.org/
%ARCH%
x86_64
%BUILDDATE%
1733737242
%INSTALLDATE%
1733737243
%PACKAGER%
Foobar McFooface <foobar@mcfooface.org>
%SIZE%
123
%VALIDATION%
pgp
"#;
let dbdesc_v1 = DbDescFile::from_str_with_schema(
v1_data,
Some(DbDescSchema::V1(SchemaVersion::new(Version::new(1, 0, 0)))),
)?;
assert_eq!(dbdesc_v1.to_string(), v1_data);
let v2_data = r#"%NAME%
foo
%VERSION%
1.0.0-1
%BASE%
foo
%DESC%
An example package
%URL%
https://example.org/
%ARCH%
x86_64
%BUILDDATE%
1733737242
%INSTALLDATE%
1733737243
%PACKAGER%
Foobar McFooface <foobar@mcfooface.org>
%SIZE%
123
%VALIDATION%
pgp
%XDATA%
pkgtype=pkg
"#;
let dbdesc_v2 = DbDescFile::from_str_with_schema(
v2_data,
Some(DbDescSchema::V2(SchemaVersion::new(Version::new(2, 0, 0)))),
)?;
assert_eq!(dbdesc_v2.to_string(), v2_data);§Errors
Returns an error if:
- the input cannot be parsed into a valid
DbDescFile, - or the derived or provided schema does not match the detected format.