// bot/run-digest.js // šŸ“Š Runner script for weekly emoji digest const { createWeeklyEmojiDigest } = require("./weekly-emoji-digest"); async function main() { // Check for required environment variables const token = process.env.GITHUB_TOKEN; const dryRun = process.env.DRY_RUN === "true"; // Support GitHub Enterprise with GITHUB_API_URL, default to public GitHub const apiUrl = process.env.GITHUB_API_URL || "https://api.github.com"; const graphqlUrl = `${apiUrl}/graphql`; if (!token) { console.error("āŒ GITHUB_TOKEN environment variable is required"); process.exit(1); } // Parse repository from GITHUB_REPOSITORY env var const repo = process.env.GITHUB_REPOSITORY; if (!repo) { console.error("āŒ GITHUB_REPOSITORY environment variable is required"); process.exit(1); } const [owner, repoName] = repo.split("/"); console.log(`šŸ“Š Generating weekly emoji digest for ${owner}/${repoName}`); console.log(`šŸ”§ Dry run: ${dryRun}`); console.log(`🌐 API URL: ${apiUrl}`); // Create a minimal octokit-like client const octokit = { graphql: async (query, variables) => { const response = await fetch(graphqlUrl, { method: "POST", headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json", Accept: "application/json", }, body: JSON.stringify({ query, variables }), }); if (!response.ok) { throw new Error(`GraphQL request failed: ${response.status}`); } const result = await response.json(); if (result.errors) { throw new Error( `GraphQL errors: ${result.errors.map((e) => e.message).join(", ")}` ); } return result.data; }, }; const digest = createWeeklyEmojiDigest(octokit); try { if (dryRun) { // Just generate and print the digest const data = await digest.generateWeeklyDigest(owner, repoName); console.log("\nšŸ“ Generated Digest:\n"); console.log(data.markdown); console.log("\nāœ… Dry run complete - no comment posted"); } else { // Generate and post the digest const result = await digest.generateAndPostDigest(owner, repoName); if (result.success) { console.log(`āœ… Digest posted to issue #${result.issueNumber}`); console.log(`šŸ“ Comment ID: ${result.commentId}`); } else { console.log(`āš ļø Could not post digest: ${result.reason}`); console.log("\nšŸ“ Generated Digest:\n"); console.log(result.digest.markdown); } } } catch (error) { console.error("āŒ Error generating digest:", error.message); process.exit(1); } } main();