Detailed changes
@@ -2,7 +2,16 @@
# Rebuild with `cargo xtask workflows`.
name: compare_perf
on:
- workflow_dispatch: {}
+ workflow_dispatch:
+ inputs:
+ head:
+ description: head
+ required: true
+ type: string
+ base:
+ description: base
+ required: true
+ type: string
jobs:
run_perf:
runs-on: namespace-profile-2x4-ubuntu-2404
@@ -11,6 +20,6 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
clean: false
- - name: steps::cargo_fmt
- run: cargo fmt --all -- --check
+ - name: compare_perf::run_perf::echo_inputs
+ run: echo ${ inputs.base } ${ inputs.head }
shell: bash -euxo pipefail {0}
@@ -6957,7 +6957,7 @@ dependencies = [
[[package]]
name = "gh-workflow"
version = "0.8.0"
-source = "git+https://github.com/zed-industries/gh-workflow?rev=0090c6b6ef82fff02bc8616645953e778d1acc08#0090c6b6ef82fff02bc8616645953e778d1acc08"
+source = "git+https://github.com/zed-industries/gh-workflow?rev=3eaa84abca0778eb54272f45a312cb24f9a0b435#3eaa84abca0778eb54272f45a312cb24f9a0b435"
dependencies = [
"async-trait",
"derive_more 2.0.1",
@@ -6974,7 +6974,7 @@ dependencies = [
[[package]]
name = "gh-workflow-macros"
version = "0.8.0"
-source = "git+https://github.com/zed-industries/gh-workflow?rev=0090c6b6ef82fff02bc8616645953e778d1acc08#0090c6b6ef82fff02bc8616645953e778d1acc08"
+source = "git+https://github.com/zed-industries/gh-workflow?rev=3eaa84abca0778eb54272f45a312cb24f9a0b435#3eaa84abca0778eb54272f45a312cb24f9a0b435"
dependencies = [
"heck 0.5.0",
"quote",
@@ -508,7 +508,7 @@ fork = "0.2.0"
futures = "0.3"
futures-batch = "0.6.1"
futures-lite = "1.13"
-gh-workflow = { git = "https://github.com/zed-industries/gh-workflow", rev = "0090c6b6ef82fff02bc8616645953e778d1acc08" }
+gh-workflow = { git = "https://github.com/zed-industries/gh-workflow", rev = "3eaa84abca0778eb54272f45a312cb24f9a0b435" }
git2 = { version = "0.20.1", default-features = false }
globset = "0.4"
handlebars = "4.3"
@@ -3,21 +3,31 @@ use gh_workflow::*;
use crate::tasks::workflows::{
runners,
steps::{self, NamedJob, named},
+ vars::Input,
};
/// Generates the danger.yml workflow
pub fn compare_perf() -> Workflow {
- let run_perf = run_perf();
+ let head = Input::string("head", None);
+ let base = Input::string("base", None);
+ let run_perf = run_perf(&base, &head);
named::workflow()
- .on(Event::default().workflow_dispatch(WorkflowDispatch::default()))
+ .on(Event::default().workflow_dispatch(
+ WorkflowDispatch::default()
+ .add_input(head.name, head.input())
+ .add_input(base.name, base.input()),
+ ))
.add_job(run_perf.name, run_perf.job)
}
-pub fn run_perf() -> NamedJob {
+pub fn run_perf(base: &Input, head: &Input) -> NamedJob {
+ fn echo_inputs(base: &Input, head: &Input) -> Step<Run> {
+ named::bash(&format!("echo {} {}", base.var(), head.var()))
+ }
named::job(
Job::default()
.runs_on(runners::LINUX_SMALL)
.add_step(steps::checkout_repo())
- .add_step(steps::cargo_fmt()),
+ .add_step(echo_inputs(base, head)),
)
}
@@ -1,6 +1,6 @@
use std::cell::RefCell;
-use gh_workflow::{Env, Expression};
+use gh_workflow::{Env, Expression, WorkflowDispatchInput};
use crate::tasks::workflows::steps::NamedJob;
@@ -96,7 +96,7 @@ impl PathCondition {
name: job.name,
job: job
.job
- .add_needs(set_by_step.clone())
+ .add_need(set_by_step.clone())
.cond(Expression::new(format!(
"needs.{}.outputs.{} == 'true'",
&set_by_step, self.name
@@ -104,3 +104,32 @@ impl PathCondition {
}
}
}
+
+pub(crate) struct Input {
+ pub input_type: &'static str,
+ pub name: &'static str,
+ pub default: Option<String>,
+}
+
+impl Input {
+ pub fn string(name: &'static str, default: Option<String>) -> Self {
+ Self {
+ input_type: "string",
+ name,
+ default,
+ }
+ }
+
+ pub fn var(&self) -> String {
+ format!("${{{{ inputs.{} }}}}", self.name)
+ }
+
+ pub fn input(&self) -> WorkflowDispatchInput {
+ WorkflowDispatchInput {
+ description: self.name.to_owned(),
+ required: self.default.is_none(),
+ input_type: self.input_type.to_owned(),
+ default: self.default.clone(),
+ }
+ }
+}