MCPcopy
hub / github.com/anomalyco/opencode / parse

Function parse

packages/desktop/scripts/finalize-latest-yml.ts:28–59  ·  view source on GitHub ↗
(content: string)

Source from the content-addressed store, hash-verified

26}
27
28function parse(content: string): LatestYml {
29 const lines = content.split("\n")
30 let version = ""
31 let releaseDate = ""
32 const files: FileEntry[] = []
33 let current: Partial<FileEntry> | undefined
34
35 const flush = () => {
36 if (current?.url && current.sha512 && current.size) files.push(current as FileEntry)
37 current = undefined
38 }
39
40 for (const line of lines) {
41 const indented = line.startsWith(" ") || line.startsWith(" -")
42 if (line.startsWith("version:")) version = line.slice("version:".length).trim()
43 else if (line.startsWith("releaseDate:"))
44 releaseDate = line.slice("releaseDate:".length).trim().replace(/^'|'$/g, "")
45 else if (line.trim().startsWith("- url:")) {
46 flush()
47 current = { url: line.trim().slice("- url:".length).trim() }
48 } else if (indented && current && line.trim().startsWith("sha512:"))
49 current.sha512 = line.trim().slice("sha512:".length).trim()
50 else if (indented && current && line.trim().startsWith("size:"))
51 current.size = Number(line.trim().slice("size:".length).trim())
52 else if (indented && current && line.trim().startsWith("blockMapSize:"))
53 current.blockMapSize = Number(line.trim().slice("blockMapSize:".length).trim())
54 else if (!indented && current) flush()
55 }
56 flush()
57
58 return { version, files, releaseDate }
59}
60
61function serialize(data: LatestYml) {
62 const lines = [`version: ${data.version}`, "files:"]

Callers 1

readFunction · 0.70

Calls 1

flushFunction · 0.70

Tested by

no test coverage detected