(signal: AbortSignal)
| 40 | } |
| 41 | |
| 42 | export async function checkAutoUpdate(signal: AbortSignal): Promise<UpdateResult> { |
| 43 | const packageDir = await findPackageDir(PACKAGE_NAME) |
| 44 | if (!packageDir) return { updated: false } |
| 45 | |
| 46 | const pkg = await readPackageJson(join(packageDir, "package.json")) |
| 47 | if (!pkg?.name || !pkg.version) return { updated: false } |
| 48 | |
| 49 | const latest = await fetchLatestVersion(pkg.name, signal) |
| 50 | if (!latest || !isVersionNewer(latest, pkg.version)) return { updated: false } |
| 51 | |
| 52 | const removeDir = await updateRemoveDir(packageDir, pkg.name) |
| 53 | if (!removeDir) return { updated: false } |
| 54 | |
| 55 | try { |
| 56 | await rm(removeDir, { recursive: true, force: true }) |
| 57 | } catch { |
| 58 | return { |
| 59 | updated: false, |
| 60 | error: "remove_failed", |
| 61 | name: pkg.name, |
| 62 | current: pkg.version, |
| 63 | latest, |
| 64 | } |
| 65 | } |
| 66 | |
| 67 | return { updated: true, name: pkg.name, current: pkg.version, latest } |
| 68 | } |
| 69 | |
| 70 | async function findPackageDir(name: string) { |
| 71 | let dir = dirname(fileURLToPath(import.meta.url)) |
no test coverage detected