[pve-devel] [PATCH proxmox-apt 1/3] release: add Commands file reference type
Fabian Grünbichler
f.gruenbichler at proxmox.com
Thu Sep 15 15:09:13 CEST 2022
used by command-not-found to lookup which package ships which command.
Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
---
Notes:
this is technically a breaking change, but the only user of this already
has a fallback match arm. I wonder whether we should mark this as
non-exhaustive?
src/deb822/release_file.rs | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/src/deb822/release_file.rs b/src/deb822/release_file.rs
index 6668450..2b7245b 100644
--- a/src/deb822/release_file.rs
+++ b/src/deb822/release_file.rs
@@ -51,6 +51,8 @@ pub type Component = String;
/// `Packages` and `Sources` will contain further reference to binary or source package files.
/// These are handled in `PackagesFile` and `SourcesFile` respectively.
pub enum FileReferenceType {
+ /// A `Commands` index listing command to package mappings
+ Commands(Architecture, Option<CompressionType>),
/// A `Contents` index listing contents of binary packages
Contents(Architecture, Option<CompressionType>),
/// A `Contents` index listing contents of binary udeb packages
@@ -123,6 +125,20 @@ impl FileReferenceType {
Ok(FileReferenceType::Unknown)
}
}
+ "cnf" => {
+ if let Some(rest) = rest.strip_prefix("Commands-") {
+ if let Some((arch, ext)) = rest.rsplit_once('.') {
+ Ok(FileReferenceType::Commands(
+ arch.to_owned(),
+ FileReferenceType::match_compression(ext).ok().flatten(),
+ ))
+ } else {
+ Ok(FileReferenceType::Commands(rest.to_owned(), None))
+ }
+ } else {
+ Ok(FileReferenceType::Unknown)
+ }
+ },
"dep11" => {
if let Some((_path, ext)) = rest.rsplit_once('.') {
Ok(FileReferenceType::Dep11(
@@ -198,7 +214,8 @@ impl FileReferenceType {
pub fn compression(&self) -> Option<CompressionType> {
match *self {
- FileReferenceType::Contents(_, comp)
+ FileReferenceType::Commands(_, comp)
+ | FileReferenceType::Contents(_, comp)
| FileReferenceType::ContentsUdeb(_, comp)
| FileReferenceType::Packages(_, comp)
| FileReferenceType::Sources(comp)
--
2.30.2
More information about the pve-devel
mailing list