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>,
)
| 134 | /// |
| 135 | /// Returns an error if: |
| 136 | /// |
| 137 | /// - values cannot be parsed, |
| 138 | /// - or unexpected keywords are encountered. |
| 139 | pub 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 { |
no test coverage detected