File size: 1,939 Bytes
1851bae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
use gh_workflow::generate::Generate;
use gh_workflow::toolchain::Component;
use gh_workflow::*;

use crate::jobs;
use crate::steps::setup_protoc;

/// Generate the autofix workflow
pub fn generate_autofix_workflow() {
    let lint_fix_job = Job::new("Lint Fix")
        .permissions(Permissions::default().contents(Level::Read))
        .add_step(Step::new("Checkout Code").uses("actions", "checkout", "v6"))
        .add_step(Step::new("Install SQLite").run("sudo apt-get install -y libsqlite3-dev"))
        .add_step(setup_protoc())
        .add_step(
            Step::toolchain()
                .add_nightly()
                .add_component(Component::Clippy)
                .add_component(Component::Rustfmt),
        )
        .add_step(Step::new("Cargo Fmt").run(jobs::fmt_cmd(true)))
        .add_step(Step::new("Cargo Clippy").run(jobs::clippy_cmd(true)))
        .add_step(
            Step::new("Cargo Clippy String Safety").run(jobs::clippy_string_safety_cmd(false)),
        )
        .add_step(Step::new("Autofix").uses(
            "autofix-ci",
            "action",
            "7a166d7532b277f34e16238930461bf77f9d7ed8",
        ));

    let events = Event::default()
        .push(Push::default().add_branch("main"))
        .pull_request(
            PullRequest::default()
                .add_type(PullRequestType::Opened)
                .add_type(PullRequestType::Synchronize)
                .add_type(PullRequestType::Reopened)
                .add_branch("main"),
        );

    let workflow = Workflow::default()
        .name("autofix.ci")
        .add_env(RustFlags::deny("warnings"))
        .on(events)
        .concurrency(
            Concurrency::default()
                .group("autofix-${{github.ref}}")
                .cancel_in_progress(false),
        )
        .add_job("lint", lint_fix_job);

    Generate::new(workflow)
        .name("autofix.yml")
        .generate()
        .unwrap();
}