import schedule from "node-schedule"; import { exec } from "node:child_process"; console.log("start ..."); async function runTsFile(filePath: string): Promise { console.log(`\nπŸš€ μ‹œμž‘λ¨: ${filePath}`); const proc = Bun.spawn(["bun", "run", filePath], { stdout: "inherit", // μžμ‹ ν”„λ‘œμ„ΈμŠ€μ˜ 좜λ ₯을 λΆ€λͺ¨ 터미널에 μ‹€μ‹œκ°„μœΌλ‘œ 보냄 stderr: "inherit", // μ—λŸ¬ 좜λ ₯도 μ‹€μ‹œκ°„μœΌλ‘œ 보냄 }); // ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ  λ•ŒκΉŒμ§€ await둜 λŒ€κΈ° const exitCode = await proc.exited; if (exitCode !== 0) { console.error(`❌ μ‹€νŒ¨: ${filePath} (μ’…λ£Œ μ½”λ“œ: ${exitCode})`); // μ‹€νŒ¨ μ‹œ λ‹€μŒ 슀크립트λ₯Ό μ‹€ν–‰ν•˜μ§€ μ•Šκ³  μ€‘λ‹¨ν•˜κ³  μ‹Άλ‹€λ©΄ throw throw new Error(`${filePath} μ‹€ν–‰ 쀑 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.`); } console.log(`βœ… μ™„λ£Œ: ${filePath}\n`); } // 11μ‹œμ— μ‹€ν–‰ - fetch-articles -> fetch-detailAddress -> updateRanging -> sendTelegram schedule.scheduleJob("0 11 * * *", async () => { console.log("Running scheduled jobs at 11 AM"); try { await runTsFile("./src/fetch-articles.ts"); await runTsFile("./src/fetch-detailAddress.ts"); await runTsFile("./src/updateRanging.ts"); await runTsFile("./src/sendTelegram.ts"); } catch (error) { console.error("Error in 11 AM scheduled job:", error); } }); // 16μ‹œμ— μ‹€ν–‰ - fetch-articles -> fetch-detailAddress -> updateRanging -> sendTelegram schedule.scheduleJob("0 16 * * *", async () => { console.log("Running scheduled jobs at 4 PM"); try { await runTsFile("./src/fetch-articles.ts"); await runTsFile("./src/fetch-detailAddress.ts"); await runTsFile("./src/updateRanging.ts"); await runTsFile("./src/sendTelegram.ts"); } catch (error) { console.error("Error in 4 PM scheduled job:", error); } });