Skip to main content

alpm_lint/lint_rules/source_info/
mod.rs

1//! All lints for [SRCINFO] files and data.
2//!
3//! [SRCINFO]: https://alpm.archlinux.page/specifications/SRCINFO.5.html
4
5use alpm_srcinfo::{SourceInfo, SourceInfoV1};
6
7use crate::{Error, LintScope, Resources};
8
9pub mod duplicate_architecture;
10pub mod invalid_spdx_license;
11pub mod long_values_aurweb;
12pub mod no_architecture;
13pub mod openpgp_key_id;
14pub mod undefined_architecture;
15pub mod unknown_architecture;
16pub mod unsafe_checksum;
17
18/// Extracts a [`SourceInfoV1`] from a [`Resources`].
19///
20/// # Note
21///
22/// The `lint_rule` needs to be provided to provide a meaningful message in case of an error.
23///
24/// # Errors
25///
26/// Returns an error if `resources` does not contain [`SourceInfo`] data.
27fn source_info_from_resource(
28    resources: &Resources,
29    lint_rule: String,
30) -> Result<&SourceInfoV1, Error> {
31    match resources {
32        Resources::SourceRepository {
33            source_info: SourceInfo::V1(source_info),
34            ..
35        }
36        | Resources::SourceInfo(SourceInfo::V1(source_info)) => Ok(source_info),
37        _ => Err(Error::InvalidResources {
38            scope: resources.scope(),
39            lint_rule,
40            expected: LintScope::SourceInfo,
41        }),
42    }
43}