Skip to main content

cargo_fixit/ops/
check.rs

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}