Files
goodbuddy/src/main/portable-user-data.ts
T

35 lines
973 B
TypeScript

import { readFileSync, statSync } from 'node:fs'
import { dirname, join, resolve } from 'node:path'
const portableMarkerName = '.goodbuddy-portable.json'
export function resolvePortableUserDataPath(input: {
packaged: boolean
platform: NodeJS.Platform
executablePath: string
}): string | undefined {
if (!input.packaged || input.platform !== 'win32') {
return undefined
}
const executableDirectory = dirname(resolve(input.executablePath))
const markerPath = join(executableDirectory, portableMarkerName)
try {
const markerFile = statSync(markerPath)
if (!markerFile.isFile() || markerFile.size > 4_096) {
return undefined
}
const marker = JSON.parse(
readFileSync(markerPath, 'utf8')
) as Record<string, unknown>
if (
marker.formatVersion !== 1 ||
marker.productName !== 'GoodBuddy'
) {
return undefined
}
return join(executableDirectory, 'data')
} catch {
return undefined
}
}