gaji 0.3.2

Type-safe GitHub Actions workflows in TypeScript
Documentation
pub const GAJI_SCRIPTS: &[(&str, &str)] = &[
    ("gha:dev", "gaji dev"),
    ("gha:build", "gaji build"),
    ("gha:watch", "gaji dev --watch"),
];

pub const GAJI_DEV_DEPS: &[(&str, &str)] = &[("tsx", "^4.0.0")];

pub const TSCONFIG_TEMPLATE: &str = r#"{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ES2020",
    "moduleResolution": "bundler",
    "lib": ["ES2020"],
    "outDir": "./dist",
    "rootDir": ".",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["workflows/**/*"],
  "exclude": ["node_modules", "dist"]
}
"#;

pub const EXAMPLE_WORKFLOW_TEMPLATE: &str = r#"// Example CI workflow - Generated by gaji init
import { getAction, Job, Workflow } from "../generated/index.js";

const checkout = getAction("actions/checkout@v5");
const setupNode = getAction("actions/setup-node@v4");

const build = new Job("ubuntu-latest")
    .addStep(checkout({
        name: "Checkout code",
    }))
    .addStep(setupNode({
        name: "Setup Node.js",
        with: {
            "node-version": "20",
        },
    }))
    .addStep({
        name: "Install dependencies",
        run: "npm ci",
    })
    .addStep({
        name: "Run tests",
        run: "npm test",
    });

const workflow = new Workflow({
    name: "CI",
    on: {
        push: {
            branches: ["main"],
        },
        pull_request: {
            branches: ["main"],
        },
    },
}).addJob("build", build);

workflow.build("ci");
"#;

pub const GITIGNORE_SECTION: &str =
    "\n# gaji generated files\ngenerated/\n.gaji-cache.json\n.gaji.local.toml\n";