63 lines · 2.2 KB · TypeScript
RawDownload
import { $, semver } from "bun"import path from "path" const rootPkgPath = path.resolve(import.meta.dir, "../../../package.json")const rootPkg = await Bun.file(rootPkgPath).json()const expectedBunVersion = rootPkg.packageManager?.split("@")[1] if (!expectedBunVersion) {  throw new Error("packageManager field not found in root package.json")} // relax version requirementconst expectedBunVersionRange = `^${expectedBunVersion}` if (!semver.satisfies(process.versions.bun, expectedBunVersionRange)) {  throw new Error(`This script requires bun@${expectedBunVersionRange}, but you are using bun@${process.versions.bun}`)} const env = {  OPENSCIENCE_CHANNEL: process.env["OPENSCIENCE_CHANNEL"],  OPENSCIENCE_BUMP: process.env["OPENSCIENCE_BUMP"],  OPENSCIENCE_VERSION: process.env["OPENSCIENCE_VERSION"],  OPENSCIENCE_RELEASE: process.env["OPENSCIENCE_RELEASE"],}const CHANNEL = await (async () => {  if (env.OPENSCIENCE_CHANNEL) return env.OPENSCIENCE_CHANNEL  if (env.OPENSCIENCE_BUMP) return "latest"  if (env.OPENSCIENCE_VERSION && !env.OPENSCIENCE_VERSION.startsWith("0.0.0-")) return "latest"  return await $`git branch --show-current`.text().then((x) => x.trim())})()const IS_PREVIEW = CHANNEL !== "latest" const VERSION = await (async () => {  if (env.OPENSCIENCE_VERSION) return env.OPENSCIENCE_VERSION  if (IS_PREVIEW) return `0.0.0-${CHANNEL}-${new Date().toISOString().slice(0, 16).replace(/[-:T]/g, "")}`  const version = await fetch("https://registry.npmjs.org/@synsci/openscience/latest")    .then((res) => {      if (!res.ok) throw new Error(res.statusText)      return res.json()    })    .then((data: any) => data.version)  const [major, minor, patch] = version.split(".").map((x: string) => Number(x) || 0)  const t = env.OPENSCIENCE_BUMP?.toLowerCase()  if (t === "major") return `${major + 1}.0.0`  if (t === "minor") return `${major}.${minor + 1}.0`  return `${major}.${minor}.${patch + 1}`})() export const Script = {  get channel() {    return CHANNEL  },  get version() {    return VERSION  },  get preview() {    return IS_PREVIEW  },  get release() {    return env.OPENSCIENCE_RELEASE  },}console.log(`openscience script`, JSON.stringify(Script, null, 2))