1use rustfix::diagnostics::Diagnostic;
2use serde::Deserialize;
3
4#[derive(Deserialize, Debug)]
5#[serde(untagged)]
6pub enum CheckOutput {
7 Artifact(Artifact),
8 Message(Message),
9}
10
11#[derive(Deserialize, Debug)]
12#[allow(dead_code)]
13pub struct Artifact {
14 #[serde(flatten)]
15 pub build_unit: BuildUnit,
16 pub fresh: bool,
17}
18
19#[derive(Deserialize, Debug)]
20pub struct Message {
21 #[serde(flatten)]
22 pub build_unit: BuildUnit,
23 pub message: MessageDiagnostic,
24}
25
26#[derive(Deserialize, Debug)]
27pub struct MessageDiagnostic {
28 #[serde(flatten)]
29 pub level: DiagnosticLevel,
30 #[serde(flatten)]
31 pub diagnostic: Diagnostic,
32}
33
34#[derive(Deserialize, Debug, PartialEq, Eq)]
35#[serde(tag = "level", rename_all = "lowercase")]
36pub enum DiagnosticLevel {
37 Error,
38 #[serde(other)]
39 Other,
40}
41
42#[derive(Deserialize, Hash, PartialEq, Clone, Eq, Debug)]
43pub struct BuildUnit {
44 pub package_id: String,
45 pub target: Target,
46}
47
48#[derive(Deserialize, Hash, PartialEq, Clone, Eq, Debug)]
49pub struct Target {
50 kind: Vec<Kind>,
51 crate_types: Vec<CrateType>,
52 name: String,
53 src_path: String,
54 edition: String,
55 doc: bool,
56 doctest: bool,
57 test: bool,
58}
59
60#[derive(Deserialize, Hash, PartialEq, Clone, Eq, Debug)]
61#[serde(rename_all(deserialize = "kebab-case"))]
62pub enum Kind {
63 Bin,
64 Example,
65 Test,
66 Bench,
67 CustomBuild,
68 Lib,
69 Rlib,
70 Dylib,
71 Cdylib,
72 Staticlib,
73 ProcMacro,
74 #[serde(untagged)]
75 Other(String),
76}
77
78#[derive(Deserialize, Hash, PartialEq, Clone, Eq, Debug)]
79#[serde(rename_all(deserialize = "kebab-case"))]
80pub enum CrateType {
81 Bin,
82 Lib,
83 Rlib,
84 Dylib,
85 Cdylib,
86 Staticlib,
87 ProcMacro,
88 #[serde(untagged)]
89 Other(String),
90}