cuenv_github/workflow/mod.rs
1//! GitHub Actions Workflow Generator
2//!
3//! Generates static GitHub Actions workflow files from cuenv's intermediate
4//! representation (IR). Unlike Buildkite's dynamic pipelines, GitHub Actions
5//! requires committed workflow files in `.github/workflows/`.
6//!
7//! # Example
8//!
9//! ```ignore
10//! use cuenv_github::workflow::GitHubActionsEmitter;
11//! use cuenv_ci::emitter::Emitter;
12//!
13//! let emitter = GitHubActionsEmitter::new()
14//! .with_runner("ubuntu-latest")
15//! .with_nix()
16//! .with_cachix("my-cache");
17//!
18//! // Single workflow output (implements Emitter trait)
19//! let yaml = emitter.emit(&ir)?;
20//!
21//! // Multi-workflow output for projects with multiple pipelines
22//! let workflows = emitter.emit_workflows(&ir)?;
23//! for (filename, content) in workflows {
24//! std::fs::write(format!(".github/workflows/{}", filename), content)?;
25//! }
26//! ```
27
28pub mod emitter;
29pub mod schema;
30pub mod stage_renderer;
31
32pub use emitter::{GitHubActionsEmitter, ReleaseWorkflowBuilder};
33pub use schema::*;
34pub use stage_renderer::{GitHubStageRenderer, transform_secret_ref};