|
1 | 1 | #!/usr/bin/env -S pkgx --quiet deno^2.1 run --ext=ts --allow-sys=uid --allow-run --allow-env=PKGX_DIR,HOMEBREW_PREFIX,HOME --allow-read=/usr/local/pkgs,${HOME}/.local/pkgs |
| 2 | +import { SemVer, semver } from "https://deno.land/x/libpkgx@v0.20.3/mod.ts"; |
2 | 3 | import { dirname, fromFileUrl, join } from "jsr:@std/path@^1"; |
3 | 4 | import { ensureDir, existsSync } from "jsr:@std/fs@^1"; |
4 | 5 | import { parseArgs } from "jsr:@std/cli@^1"; |
5 | | -import * as semver from "jsr:@std/semver@^1"; |
6 | 6 |
|
7 | 7 | function standardPath() { |
8 | 8 | let path = "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"; |
@@ -283,32 +283,31 @@ async function create_v_symlinks(prefix: string) { |
283 | 283 | const shelf = dirname(prefix); |
284 | 284 |
|
285 | 285 | const versions = []; |
286 | | - for await (const entry of Deno.readDir(shelf)) { |
287 | | - if ( |
288 | | - entry.isDirectory && !entry.isSymlink && entry.name.startsWith("v") && |
289 | | - entry.name != "var" |
290 | | - ) { |
291 | | - try { |
292 | | - versions.push(semver.parse(entry.name)); |
293 | | - } catch { |
294 | | - //ignore |
295 | | - } |
| 286 | + for await (const { name, isDirectory, isSymlink } of Deno.readDir(shelf)) { |
| 287 | + console.log(name, isDirectory, isSymlink); |
| 288 | + if (isSymlink) continue; |
| 289 | + if (!isDirectory) continue; |
| 290 | + if (!name.startsWith("v")) continue; |
| 291 | + if (name == "var") continue; |
| 292 | + const version = semver.parse(name); |
| 293 | + if (version) { |
| 294 | + versions.push(version); |
296 | 295 | } |
297 | 296 | } |
298 | 297 |
|
299 | 298 | // collect an Record of versions per major version |
300 | | - const major_versions: Record<number, semver.SemVer> = {}; |
| 299 | + const major_versions: Record<number, SemVer> = {}; |
301 | 300 | for (const version of versions) { |
302 | 301 | if ( |
303 | 302 | major_versions[version.major] === undefined || |
304 | | - semver.greaterThan(version, major_versions[version.major]) |
| 303 | + version.gt(major_versions[version.major]) |
305 | 304 | ) { |
306 | 305 | major_versions[version.major] = version; |
307 | 306 | } |
308 | 307 | } |
309 | 308 |
|
310 | | - for (const [key, value] of Object.entries(major_versions)) { |
311 | | - symlink_with_overwrite(`v${semver.format(value)}`, join(shelf, `v${key}`)); |
| 309 | + for (const [key, semver] of Object.entries(major_versions)) { |
| 310 | + symlink_with_overwrite(`v${semver}`, join(shelf, `v${key}`)); |
312 | 311 | } |
313 | 312 | } |
314 | 313 |
|
|
0 commit comments