(catalog: &ExtensionCatalog)
| 273 | } |
| 274 | |
| 275 | fn build_specs(catalog: &ExtensionCatalog) -> Result<Vec<PromotedExtensionBuildSpec>> { |
| 276 | let mut specs = Vec::new(); |
| 277 | for extension in catalog |
| 278 | .extensions |
| 279 | .iter() |
| 280 | .filter(|extension| extension.promotion.requested) |
| 281 | { |
| 282 | let archive = extension |
| 283 | .promotion |
| 284 | .archive |
| 285 | .clone() |
| 286 | .unwrap_or_else(|| format!("extensions/{}.tar.zst", extension.sql_name)); |
| 287 | specs.push(PromotedExtensionBuildSpec { |
| 288 | id: extension.id.clone(), |
| 289 | display_name: extension.display_name.clone(), |
| 290 | sql_name: extension.sql_name.clone(), |
| 291 | source_kind: extension.source_kind.clone(), |
| 292 | build_kind: build_kind(extension).to_owned(), |
| 293 | source_dir: extension_source_dir(extension), |
| 294 | make_args: pgxs_make_args(extension), |
| 295 | contrib_dir: (extension.source_kind == "postgres-contrib") |
| 296 | .then(|| extension_contrib_dir_name(&extension.id)), |
| 297 | module_file: extension.native_module_file.clone(), |
| 298 | archive, |
| 299 | control_file: extension.control_file.clone(), |
| 300 | stable: extension.promotion.stable, |
| 301 | dependencies: extension.dependencies.clone(), |
| 302 | native_dependencies: extension.native_dependencies.clone(), |
| 303 | load_order: extension.load_order.clone(), |
| 304 | lifecycle: extension.lifecycle.clone(), |
| 305 | smoke: extension.smoke.clone(), |
| 306 | tests: extension.tests.clone(), |
| 307 | }); |
| 308 | } |
| 309 | specs.sort_by(|left, right| left.sql_name.cmp(&right.sql_name)); |
| 310 | Ok(specs) |
| 311 | } |
| 312 | |
| 313 | #[derive(Debug, Clone)] |
| 314 | pub(crate) struct PromotedExtensionBuildSpec { |
no test coverage detected