cherry_pick.rs

 1use gh_workflow::*;
 2
 3use crate::tasks::workflows::{
 4    runners,
 5    steps::{self, NamedJob, named},
 6    vars::Input,
 7};
 8
 9pub fn cherry_pick() -> Workflow {
10    let branch = Input::string("branch", None);
11    let commit = Input::string("commit", None);
12    let cherry_pick = run_cherry_pick(&branch, &commit);
13    named::workflow()
14        .on(Event::default().workflow_dispatch(
15            WorkflowDispatch::default()
16                .add_input(commit.name, commit.input())
17                .add_input(branch.name, branch.input()),
18        ))
19        .add_job(cherry_pick.name, cherry_pick.job)
20}
21
22fn run_cherry_pick(branch: &Input, commit: &Input) -> NamedJob {
23    fn cherry_pick(branch: &str, commit: &str) -> Step<Run> {
24        named::bash(&format!("./scripts/cherry-pick {branch} {commit}"))
25    }
26
27    named::job(
28        Job::default()
29            .runs_on(runners::LINUX_SMALL)
30            .add_step(steps::checkout_repo())
31            .add_step(cherry_pick(&branch.var(), &commit.var())),
32    )
33}