mirror of
https://github.com/ivabus/pantry
synced 2025-06-08 08:20:32 +03:00
Correctly sort versions so the tea installer works
This commit is contained in:
parent
3e1b0a2505
commit
09a566cf58
2 changed files with 7 additions and 11 deletions
|
@ -14,7 +14,7 @@ import { S3 } from "s3"
|
|||
import { stringify as yaml } from "deno/encoding/yaml.ts"
|
||||
import { stringify as csv } from "deno/encoding/csv.ts"
|
||||
import { Inventory } from "hooks/useInventory.ts"
|
||||
import * as semver from "semver"
|
||||
import SemVer, * as semver from "semver"
|
||||
|
||||
const s3 = new S3({
|
||||
accessKeyID: Deno.env.get("AWS_ACCESS_KEY_ID")!,
|
||||
|
@ -30,7 +30,7 @@ const flat = []
|
|||
for await (const pkg of bucket.listAllObjects({ batchSize: 200 })) {
|
||||
if (!/\.tar\.[gx]z$/.test(pkg.key ?? '')) { continue }
|
||||
|
||||
const matches = pkg.key!.match(new RegExp(`^(.*)/(.*)/(.*)/v(${semver.regex})\.tar\.[xg]z$`))
|
||||
const matches = pkg.key!.match(new RegExp(`^(.*)/(.*)/(.*)/v(${semver.regex.source})\.tar\.[xg]z$`))
|
||||
if (!matches) { continue }
|
||||
|
||||
const [_, project, platform, arch, version] = matches
|
||||
|
@ -70,7 +70,9 @@ bucket.putObject("versions.csv", csvData)
|
|||
for(const [project, platforms] of Object.entries(inventory)) {
|
||||
for (const [platform, archs] of Object.entries(platforms)) {
|
||||
for (const [arch, versions] of Object.entries(archs)) {
|
||||
const txt = te.encode(versions.join("\n"))
|
||||
const v = versions.map(x => new SemVer(x)).sort(semver.compare)
|
||||
const txt = te.encode(v.join("\n"))
|
||||
console.log(project, platform, arch, v)
|
||||
bucket.putObject(`${project}/${platform}/${arch}/versions.txt`, txt)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -99,13 +99,7 @@ async function get_versions(key: string, pkg: Package): Promise<SemVer[]> {
|
|||
?? []
|
||||
|
||||
// have to add pkg.version as put and get are not atomic
|
||||
return [...new Set([...got, pkg.version])].sort()
|
||||
}
|
||||
|
||||
// Somewhat hacky. We call the bottle on thing locally, and another on the server.
|
||||
function fixup_checksum(data: Uint8Array, new_file_name: string) {
|
||||
const checksum = new TextDecoder().decode(data).split(" ")[0]
|
||||
return new TextEncoder().encode(`${checksum} ${new_file_name}`)
|
||||
return [...new Set([...got, pkg.version])].sort(semver.compare)
|
||||
}
|
||||
|
||||
function assert_pkg(pkg: Package | PackageRequirement) {
|
||||
|
@ -117,4 +111,4 @@ function assert_pkg(pkg: Package | PackageRequirement) {
|
|||
version: new SemVer(pkg.constraint)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue