Skip to main content

kiutils_kicad/
version.rs

1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
2#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3pub enum KiCadSeries {
4    V9,
5    V10,
6}
7
8#[derive(Debug, Clone, Copy, PartialEq, Eq)]
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10pub struct VersionPolicy {
11    pub target: KiCadSeries,
12    pub reject_older: bool,
13}
14
15impl Default for VersionPolicy {
16    fn default() -> Self {
17        Self {
18            target: KiCadSeries::V10,
19            reject_older: true,
20        }
21    }
22}
23
24impl VersionPolicy {
25    pub const V9_MIN: i32 = 20240101;
26    pub const V10_BASE: i32 = 20260101;
27
28    pub fn accepts(&self, version: i32) -> bool {
29        version >= Self::V9_MIN
30    }
31
32    pub fn is_future_for_target(&self, version: i32) -> bool {
33        match self.target {
34            KiCadSeries::V9 => version > Self::V9_MIN,
35            KiCadSeries::V10 => version > Self::V10_BASE,
36        }
37    }
38}