revert to js action

This commit is contained in:
David Blass
2025-11-06 17:35:32 -05:00
parent f31e3a026e
commit 65e3da81e9
6 changed files with 267 additions and 27 deletions
+13
View File
@@ -0,0 +1,13 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# Ensure lockfile is up to date
echo "🔒 Updating lockfile..."
pnpm install --lockfile-only
# Build the action before committing
echo "🔨 Building action..."
pnpm build
# Add the built files and lockfile to the commit
git add entry.cjs pnpm-lock.yaml
+2 -25
View File
@@ -12,31 +12,8 @@ inputs:
required: false
runs:
using: "composite"
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: "*"
- name: Setup Node.js 24
uses: actions/setup-node@v4
with:
node-version: "24"
- name: Install dependencies
run: pnpm install
shell: bash
working-directory: ${{ github.action_path }}
- name: Run agent
run: |
cd $GITHUB_WORKSPACE
node ${{ github.action_path }}/entry.ts
shell: bash
env:
INPUTS_JSON: ${{ toJSON(inputs) }}
using: "node20"
main: "entry.cjs"
branding:
icon: "code"
+39
View File
@@ -0,0 +1,39 @@
#!/usr/bin/env node
/**
* Build entry point - wraps entry.ts to avoid top-level await in CJS output
*/
import * as core from "@actions/core";
import { type } from "arktype";
import { Inputs, main } from "./main.ts";
import packageJson from "./package.json" with { type: "json" };
import { log } from "./utils/cli.ts";
async function run(): Promise<void> {
try {
log.info(`🐸 Running pullfrog/action@${packageJson.version}...`);
const inputsJson = process.env.INPUTS_JSON;
if (!inputsJson) {
throw new Error("INPUTS_JSON environment variable not found");
}
const parsed = type("string.json.parse").assert(inputsJson);
const inputs = Inputs.assert(parsed);
const result = await main(inputs);
if (!result.success) {
throw new Error(result.error || "Agent execution failed");
}
} catch (error) {
const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
core.setFailed(`Action failed: ${errorMessage}`);
}
}
// Wrap in IIFE to avoid top-level await in CJS
(async () => {
await run();
})();
Executable
+183
View File
File diff suppressed because one or more lines are too long
+24
View File
@@ -0,0 +1,24 @@
import { build } from "esbuild";
// Build the GitHub Action bundle only
// For npm package builds, use zshy (pnpm build:npm)
await build({
entryPoints: ["./entry.build.ts"],
bundle: true,
outfile: "./entry.cjs",
format: "cjs",
platform: "node",
target: "node20",
minify: true,
sourcemap: false,
// @actions/core is provided by GitHub Actions runtime, but we still need it bundled
// for local testing. However, we can mark it to reduce duplication if needed.
external: [],
// Enable tree-shaking to remove unused code
treeShaking: true,
// Drop console statements in production (but keep for debugging)
drop: [],
});
console.log("✅ Build completed successfully!");
+6 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@pullfrog/action",
"version": "0.0.72",
"version": "0.0.73",
"type": "module",
"files": [
"index.js",
@@ -15,9 +15,11 @@
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"typecheck": "tsc --noEmit",
"build": "node esbuild.config.js",
"play": "node play.ts",
"upDeps": "pnpm up --latest",
"lock": "pnpm --ignore-workspace install"
"lock": "pnpm --ignore-workspace install",
"prepare": "husky"
},
"dependencies": {
"@actions/core": "^1.11.1",
@@ -36,6 +38,8 @@
"devDependencies": {
"@types/node": "^24.7.2",
"arg": "^5.0.2",
"esbuild": "^0.25.9",
"husky": "^9.0.0",
"typescript": "^5.9.3"
},
"repository": {