60 lines · 1.7 KB · Rust
RawDownload
use anyhow::{Context, Result};use clap::Parser;use std::fs;use std::path::Path; mod after_release;mod cherry_pick;mod compare_perf;mod danger;mod nix_build;mod release_nightly;mod run_bundling; mod release;mod run_agent_evals;mod run_tests;mod runners;mod steps;mod vars; #[derive(Parser)]pub struct GenerateWorkflowArgs {} pub fn run_workflows(_: GenerateWorkflowArgs) -> Result<()> {    let dir = Path::new(".github/workflows");     let workflows = vec![        ("danger.yml", danger::danger()),        ("run_bundling.yml", run_bundling::run_bundling()),        ("release_nightly.yml", release_nightly::release_nightly()),        ("run_tests.yml", run_tests::run_tests()),        ("release.yml", release::release()),        ("cherry_pick.yml", cherry_pick::cherry_pick()),        ("compare_perf.yml", compare_perf::compare_perf()),        ("run_unit_evals.yml", run_agent_evals::run_unit_evals()),        (            "run_cron_unit_evals.yml",            run_agent_evals::run_cron_unit_evals(),        ),        ("run_agent_evals.yml", run_agent_evals::run_agent_evals()),        ("after_release.yml", after_release::after_release()),    ];    fs::create_dir_all(dir)        .with_context(|| format!("Failed to create directory: {}", dir.display()))?;     for (filename, workflow) in workflows {        let content = workflow            .to_string()            .map_err(|e| anyhow::anyhow!("{}: {:?}", filename, e))?;        let content = format!(            "# Generated from xtask::workflows::{}\n# Rebuild with `cargo xtask workflows`.\n{}",            workflow.name.unwrap(),            content        );        let file_path = dir.join(filename);        fs::write(&file_path, content)?;    }     Ok(())}