Skip to repository content67 lines · 2.3 KB · rust
tenant.openagents/omega
No repository description is available.
OpenAgents Git authority 2026-07-28T06:49:26.757Z Public web read
NIP-34 coordinate
30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omegaMaintainersHidden in public view
References2 branches · 1 tag
Read-only clone
git clone https://openagents.com/git/tenant.openagents/omega.gitBrowse files
cherry_pick.rs
1use gh_workflow::*;
2
3use crate::tasks::workflows::{
4 runners,
5 steps::{
6 self, CommonPermissionSets, NamedJob, RepositoryTarget, TokenPermissions, ZippyGitIdentity,
7 named,
8 },
9 vars::{StepOutput, WorkflowInput},
10};
11
12pub fn cherry_pick() -> Workflow {
13 let branch = WorkflowInput::string("branch", None);
14 let commit = WorkflowInput::string("commit", None);
15 let channel = WorkflowInput::string("channel", None);
16 let pr_number = WorkflowInput::string("pr_number", None);
17 let cherry_pick = run_cherry_pick(&branch, &commit, &channel);
18 named::workflow()
19 .with_minimal_permissions()
20 .run_name(format!("cherry_pick to {channel} #{pr_number}"))
21 .on(Event::default().workflow_dispatch(
22 WorkflowDispatch::default()
23 .add_input(commit.name, commit.input())
24 .add_input(branch.name, branch.input())
25 .add_input(channel.name, channel.input())
26 .add_input(pr_number.name, pr_number.input()),
27 ))
28 .add_job(cherry_pick.name, cherry_pick.job)
29}
30
31fn run_cherry_pick(
32 branch: &WorkflowInput,
33 commit: &WorkflowInput,
34 channel: &WorkflowInput,
35) -> NamedJob {
36 fn cherry_pick(
37 branch: &WorkflowInput,
38 commit: &WorkflowInput,
39 channel: &WorkflowInput,
40 token: &StepOutput,
41 ) -> Step<Run> {
42 named::bash(r#"./script/cherry-pick "$BRANCH" "$COMMIT" "$CHANNEL""#)
43 .add_env(("BRANCH", branch.to_string()))
44 .add_env(("COMMIT", commit.to_string()))
45 .add_env(("CHANNEL", channel.to_string()))
46 .with_zippy_git_identity()
47 .add_env(("GITHUB_TOKEN", token))
48 }
49
50 let (authenticate, token) = steps::authenticate_as_zippy()
51 .for_repository(RepositoryTarget::current())
52 .with_permissions([
53 (TokenPermissions::Contents, Level::Write),
54 (TokenPermissions::Workflows, Level::Write),
55 (TokenPermissions::PullRequests, Level::Write),
56 ])
57 .into();
58
59 named::job(
60 Job::default()
61 .runs_on(runners::LINUX_SMALL)
62 .add_step(authenticate)
63 .add_step(steps::checkout_repo().with_token(&token))
64 .add_step(cherry_pick(branch, commit, channel, &token)),
65 )
66}
67