conduit_cli/core/schemas/
lock.rs1use crate::core::domain::addon::Addon;
2use crate::core::domain::loader::Loader;
3use crate::core::domain::source::AddonSource;
4use serde::{Deserialize, Serialize};
5use std::collections::BTreeMap;
6
7#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
8pub enum HashKind {
9 Sha1,
10 Sha256,
11 Sha512,
12}
13
14#[derive(Debug, Serialize, Deserialize, Clone)]
15pub struct Lockfile {
16 pub version: u32,
17 pub instance: InstanceSnapshot,
18 pub entries: BTreeMap<String, LockedAddon>,
19}
20
21#[derive(Debug, Serialize, Deserialize, Clone)]
22pub struct InstanceSnapshot {
23 pub minecraft_version: String,
24 pub loader: Loader,
25 pub loader_hash: Option<String>,
26 pub hash_kind: Option<HashKind>,
27}
28
29#[derive(Debug, Serialize, Deserialize, Clone)]
30pub struct LockedAddon {
31 pub metadata: Addon,
32 pub source: AddonSource,
33}
34
35impl Default for Lockfile {
36 fn default() -> Self {
37 Self {
38 version: 1,
39 instance: InstanceSnapshot::default(),
40 entries: BTreeMap::new(),
41 }
42 }
43}
44
45impl Default for InstanceSnapshot {
46 fn default() -> Self {
47 Self {
48 minecraft_version: "1.21.11".to_string(),
49 loader: Loader::Vanilla,
50 loader_hash: None,
51 hash_kind: None,
52 }
53 }
54}