@@ -5,7 +5,9 @@ use crate::tasks::workflows::{
extension_release::extension_workflow_secrets,
extension_tests::{self},
runners,
- steps::{self, CommonJobConditions, DEFAULT_REPOSITORY_OWNER_GUARD, NamedJob, named},
+ steps::{
+ self, CommonJobConditions, DEFAULT_REPOSITORY_OWNER_GUARD, FluentBuilder, NamedJob, named,
+ },
vars::{
JobOutput, StepOutput, WorkflowInput, WorkflowSecret, one_workflow_per_non_main_branch,
},
@@ -113,7 +115,7 @@ fn create_version_label(
app_id: &WorkflowSecret,
app_secret: &WorkflowSecret,
) -> NamedJob {
- let (generate_token, generated_token) = generate_token(app_id, app_secret);
+ let (generate_token, generated_token) = generate_token(app_id, app_secret, None);
let job = steps::dependant_job(dependencies)
.cond(Expression::new(format!(
"{DEFAULT_REPOSITORY_OWNER_GUARD} && github.event_name == 'push' && github.ref == 'refs/heads/main' && {} == 'false'",
@@ -193,7 +195,7 @@ fn bump_extension_version(
app_id: &WorkflowSecret,
app_secret: &WorkflowSecret,
) -> NamedJob {
- let (generate_token, generated_token) = generate_token(app_id, app_secret);
+ let (generate_token, generated_token) = generate_token(app_id, app_secret, None);
let (bump_version, new_version) = bump_version(current_version, bump_type);
let job = steps::dependant_job(dependencies)
@@ -216,13 +218,24 @@ fn bump_extension_version(
pub(crate) fn generate_token(
app_id: &WorkflowSecret,
app_secret: &WorkflowSecret,
+ repository_target: Option<RepositoryTarget>,
) -> (Step<Use>, StepOutput) {
let step = named::uses("actions", "create-github-app-token", "v2")
.id("generate-token")
.add_with(
Input::default()
.add("app-id", app_id.to_string())
- .add("private-key", app_secret.to_string()),
+ .add("private-key", app_secret.to_string())
+ .when_some(
+ repository_target,
+ |input,
+ RepositoryTarget {
+ owner,
+ repositories,
+ }| {
+ input.add("owner", owner).add("repositories", repositories)
+ },
+ ),
);
let generated_token = StepOutput::new(&step, "token");
@@ -288,3 +301,17 @@ fn create_pull_request(new_version: StepOutput, generated_token: StepOutput) ->
.add("sign-commits", true),
)
}
+
+pub(crate) struct RepositoryTarget {
+ owner: String,
+ repositories: String,
+}
+
+impl RepositoryTarget {
+ pub fn new<T: ToString>(owner: T, repositories: &[&str]) -> Self {
+ Self {
+ owner: owner.to_string(),
+ repositories: repositories.join("\n"),
+ }
+ }
+}
@@ -2,7 +2,7 @@ use gh_workflow::{Event, Job, Run, Step, Use, Workflow, WorkflowCall};
use indoc::indoc;
use crate::tasks::workflows::{
- extension_bump::generate_token,
+ extension_bump::{RepositoryTarget, generate_token},
runners,
steps::{CommonJobConditions, NamedJob, checkout_repo, named},
vars::{StepOutput, WorkflowSecret},
@@ -26,7 +26,9 @@ pub(crate) fn extension_release() -> Workflow {
}
fn create_release(app_id: &WorkflowSecret, app_secret: &WorkflowSecret) -> NamedJob {
- let (generate_token, generated_token) = generate_token(&app_id, &app_secret);
+ let extension_registry = RepositoryTarget::new("zed-industries", &["extensions"]);
+ let (generate_token, generated_token) =
+ generate_token(&app_id, &app_secret, Some(extension_registry));
let (get_extension_id, extension_id) = get_extension_id();
let job = Job::default()