import type { Package } from "./packages"; import { packages } from "./packages"; import { existsSync, copyFileSync } from "node:fs"; import { dirname, join } from "node:path"; import { globby } from "globby"; for (const pkg of packages) { try { await loadPackage(pkg, "tmp"); } catch (error) { console.error(pkg.name, error); } } async function loadPackage(pkg: Package, cwd?: string): Promise { await gitClone({ cwd, repository: pkg.repository, name: pkg.name, }); const dir = join(cwd ?? "", pkg.name, pkg.cwd ?? ""); await spawn({ cwd: dir, cmd: ["bun", "install"], }); if (!pkg.tests || pkg.tests.style !== "jest") { return; } const files = await globby(pkg.tests.include, { cwd: dir, ignore: pkg.tests.exclude ?? [crypto.randomUUID()], onlyFiles: true, caseSensitiveMatch: false, }); if (!files.length) { throw new Error("No tests found"); } for (const file of files) { let path = file; if (!file.includes(".test.")) { const ext = path.lastIndexOf("."); path = file.substring(0, ext) + ".test" + file.substring(ext); copyFileSync(join(dir, file), join(dir, path)); } await spawn({ cwd: dir, cmd: ["bun", "test", path], }); } } type GitCloneOptions = { repository: string; cwd?: string; name?: string; }; async function gitClone(options: GitCloneOptions): Promise { const name = options.name ?? dirname(options.repository); const cwd = options.cwd ?? process.cwd(); const path = join(cwd, name); if (existsSync(path)) { await spawn({ cwd: path, cmd: ["git", "pull"], }); } else { const url = `${options.repository}`; await spawn({ cwd, cmd: ["git", "clone", "--single-branch", "--depth", "1", url, name], }); } } type SpawnOptions = { cwd: string; cmd: string[]; }; async function spawn({ cwd, cmd }: SpawnOptions) { const { exited } = await Bun.spawn({ cwd, cmd, stdout: "inherit", stderr: "inherit", }); const exitCode = await exited; if (exitCode !== 0) { throw new Error(`"${cmd.join(" ")}" exited with ${exitCode}`); } } Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)AuthorFilesLines
2023-10-09fix(AbortSignal/fetch) fix AbortSignal.timeout, fetch lock behavior and fetch...Gravatar Ciro Spaciari 29-61/+303
2023-10-09Fix npm tag for canary bun-types, againGravatar Ashcon Partovi 2-56/+10
2023-10-09Add Fedora build instructions to development.md (#6359)Gravatar otterDeveloper 1-0/+10
2023-10-09added commands (#6314)Gravatar babar 1-1/+2
2023-10-09Update README.md (#6291)Gravatar TPLJ 1-1/+1
2023-10-09docs: fixing a couple typos (#6331)Gravatar Michael Di Prisco 2-2/+2
2023-10-09fix: support uint8 exit code range (#6303)Gravatar Liz 2-2/+11
2023-10-09Fix array variables preview in debugger (#6379)Gravatar 2hu 1-1/+4
2023-10-07feat(KeyObject) (#5940)Gravatar Ciro Spaciari 106-67/+9342
2023-10-07Exclude more filesGravatar Jarred Sumner 1-1/+1
2023-10-07Exclude more filesGravatar Jarred Sumner 1-1/+2
2023-10-07Update settings.jsonGravatar Jarred Sumner 1-1/+2
2023-10-07Update settings.jsonGravatar Jarred Sumner 1-2/+3
2023-10-06fix a couple install testsGravatar Dylan Conway 1-8/+8
2023-10-06formatGravatar Dylan Conway 1-1/+2
2023-10-06Fix memory leak in fetch() (#6350)Gravatar Jarred Sumner 1-2/+0
2023-10-06[types] allow onLoad plugin callbacks to return undefined (#6346)Gravatar Silver 1-1/+1
2023-10-06docs: `file.stream()` is not a promise (#6337)Gravatar Paul Nodet 1-1/+1