octocode-ai-script 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/package",
3
+ "name": "octocode-ai-script",
4
+ "license": "MIT",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "dependencies": {
9
+ "semver": "^7.6.3"
10
+ },
11
+ "devDependencies": {
12
+ "@types/bun": "1.3.11",
13
+ "@types/semver": "^7.5.8"
14
+ },
15
+ "exports": {
16
+ ".": "./src/index.ts"
17
+ },
18
+ "version": "5.0.0"
19
+ }
package/src/index.ts ADDED
@@ -0,0 +1,75 @@
1
+ import { $ } from "bun"
2
+ import semver from "semver"
3
+ import path from "path"
4
+
5
+ const rootPkgPath = path.resolve(import.meta.dir, "../../../package.json")
6
+ const rootPkg = await Bun.file(rootPkgPath).json()
7
+ const expectedBunVersion = rootPkg.packageManager?.split("@")[1]
8
+
9
+ if (!expectedBunVersion) {
10
+ throw new Error("packageManager field not found in root package.json")
11
+ }
12
+
13
+ // relax version requirement
14
+ const expectedBunVersionRange = `^${expectedBunVersion}`
15
+
16
+ if (!semver.satisfies(process.versions.bun, expectedBunVersionRange)) {
17
+ throw new Error(`This script requires bun@${expectedBunVersionRange}, but you are using bun@${process.versions.bun}`)
18
+ }
19
+
20
+ const env = {
21
+ OCTOCODE_CHANNEL: process.env["OCTOCODE_CHANNEL"],
22
+ OCTOCODE_BUMP: process.env["OCTOCODE_BUMP"],
23
+ OCTOCODE_VERSION: process.env["OCTOCODE_VERSION"],
24
+ OCTOCODE_RELEASE: process.env["OCTOCODE_RELEASE"],
25
+ }
26
+ const CHANNEL = await (async () => {
27
+ if (env.OCTOCODE_CHANNEL) return env.OCTOCODE_CHANNEL
28
+ if (env.OCTOCODE_BUMP) return "latest"
29
+ if (env.OCTOCODE_VERSION && !env.OCTOCODE_VERSION.startsWith("0.0.0-")) return "latest"
30
+ return await $`git branch --show-current`.text().then((x) => x.trim()) || "latest"
31
+ })()
32
+ const IS_PREVIEW = CHANNEL !== "latest"
33
+
34
+ const SHORT_SHA = await (async () => {
35
+ try {
36
+ const sha = await $`git rev-parse --short HEAD`.text()
37
+ return sha.trim()
38
+ } catch {
39
+ return process.env["OCTOCODE_COMMIT_SHA"] ?? null
40
+ }
41
+ })()
42
+
43
+ const VERSION = await (async () => {
44
+ if (env.OCTOCODE_VERSION) return env.OCTOCODE_VERSION
45
+ if (IS_PREVIEW) {
46
+ if (SHORT_SHA) return `0.0.0-${CHANNEL}-${SHORT_SHA}`
47
+ const ts = new Date().toISOString().replace(/[-:T]/g, "").slice(0, 12)
48
+ return `0.0.0-${CHANNEL}-${ts}`
49
+ }
50
+ const version = await Bun.file(path.resolve(import.meta.dir, "../../opencode/package.json"))
51
+ .json()
52
+ .then((data: any) => data.version)
53
+ const t = env.OCTOCODE_BUMP?.toLowerCase()
54
+ if (!t) return version
55
+ const [major, minor, patch] = version.split(".").map((x: string) => Number(x) || 0)
56
+ if (t === "major") return `${major + 1}.0.0`
57
+ if (t === "minor") return `${major}.${minor + 1}.0`
58
+ return `${major}.${minor}.${patch + 1}`
59
+ })()
60
+
61
+ export const Script = {
62
+ get channel() {
63
+ return CHANNEL
64
+ },
65
+ get version() {
66
+ return VERSION
67
+ },
68
+ get preview() {
69
+ return IS_PREVIEW
70
+ },
71
+ get release(): boolean {
72
+ return !!env.OCTOCODE_RELEASE
73
+ },
74
+ }
75
+ console.log(`octocode script`, JSON.stringify(Script, null, 2))
package/tsconfig.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "extends": "@tsconfig/bun/tsconfig.json",
4
+ "compilerOptions": {
5
+ "lib": ["ESNext", "DOM", "DOM.Iterable"],
6
+ "noUncheckedIndexedAccess": false
7
+ }
8
+ }