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}