MCPcopy Create free account
hub / github.com/archlinux/alpm / handle_package_base

Function handle_package_base

alpm-srcinfo/src/pkgbuild_bridge/package_base.rs:136–465  ·  view source on GitHub ↗

Convert the raw keyword map from the [`BridgeOutput`] into a well-formed and typed [`PackageBase`]. Handles parsing and type conversions of all raw input into their respective `alpm-types`. # Errors Returns an error if: - values cannot be parsed, - or unexpected keywords are encountered.

(
    name: Name,
    mut raw: HashMap<Keyword, Value>,
)

Source from the content-addressed store, hash-verified

134///
135/// Returns an error if:
136///
137/// - values cannot be parsed,
138/// - or unexpected keywords are encountered.
139pub fn handle_package_base(
140 name: Name,
141 mut raw: HashMap<Keyword, Value>,
142) -> Result<PackageBase, BridgeError> {
143 // First up, we handle keywords that're required.
144 let pkgver_keyword = Keyword::simple("pkgver");
145 let value = ensure_keyword_exists(&pkgver_keyword, &mut raw)?;
146 let package_version: PackageVersion =
147 parse_value(&pkgver_keyword, &value, PackageVersion::parser)?;
148
149 let pkgrel_keyword = Keyword::simple("pkgrel");
150 let value = ensure_keyword_exists(&pkgrel_keyword, &mut raw)?;
151 let package_release: PackageRelease =
152 parse_value(&pkgver_keyword, &value, PackageRelease::parser)?;
153
154 let mut description = None;
155 let mut url = None;
156 let mut licenses = Vec::new();
157 let mut changelog = None;
158 let mut architectures = Architectures::Some(Vec::new());
159 let mut architecture_properties = BTreeMap::new();
160
161 // Build or package management related meta fields
162 let mut install = None;
163 let mut groups = Vec::new();
164 let mut options = Vec::new();
165 let mut backups = Vec::new();
166
167 let mut epoch: Option<Epoch> = None;
168 let mut pgp_fingerprints = Vec::new();
169
170 let mut dependencies = Vec::new();
171 let mut optional_dependencies = Vec::new();
172 let mut provides = Vec::new();
173 let mut conflicts = Vec::new();
174 let mut replaces = Vec::new();
175 // The following dependencies are build-time specific dependencies.
176 // `makepkg` expects all dependencies for all split packages to be specified in the
177 // PackageBase.
178 let mut check_dependencies = Vec::new();
179 let mut make_dependencies = Vec::new();
180
181 let mut sources = Vec::new();
182 let mut no_extracts = Vec::new();
183 let mut b2_checksums = Vec::new();
184 let mut md5_checksums = Vec::new();
185 let mut sha1_checksums = Vec::new();
186 let mut sha224_checksums = Vec::new();
187 let mut sha256_checksums = Vec::new();
188 let mut sha384_checksums = Vec::new();
189 let mut sha512_checksums = Vec::new();
190 let mut crc_checksums = Vec::new();
191
192 // Go through all keywords and handle them.
193 for (raw_keyword, value) in &raw {

Callers 1

try_fromMethod · 0.85

Calls 8

ensure_keyword_existsFunction · 0.85
parse_valueFunction · 0.85
ensure_no_suffixFunction · 0.85
parse_optional_valueFunction · 0.85
parse_value_arrayFunction · 0.85
parse_arch_arrayFunction · 0.85
parseMethod · 0.80
as_owned_vecMethod · 0.80

Tested by

no test coverage detected