🌳
pt0/serverF/pathF/absPathToPtPathF.mts
1import { type absFileDirPath, type ptRelPath } from '../../ptDirF.mts'
2import { ptDir } from '../ptDirF.mts'
5import { pathDownJoin } from '../pathF.mts'
6import { fileURLToPath } from 'url'
7import os from 'os'
9export const absPathToPtPath = (path: absFileDirPath): ptRelPath => {
11 if (path === ptDir) return '' as ptRelPath
12 return replaceStrict(path, ptDir + '/', '') as ptRelPath
15export const ptPathToAbsPath = (ptPath: ptRelPath): absFileDirPath => {
16 return pathDownJoin(ptDir, ptPath) as absFileDirPath
19// Accepts absolute, relative, or file:// URL path, returns relative
20export const toPtRelPath = (pathArg: string): ptRelPath => {
21 const resolved = pathArg.startsWith('file://') ? fileURLToPath(pathArg) : pathArg
22 if (resolved.startsWith(ptDir)) return absPathToPtPath(resolved as absFileDirPath)
23 return resolved as ptRelPath
26// Display-friendly: absolute path → ./relative (for console output, cmd strings)
27export const shortPtPath = (pathArg: string): string => `./${toPtRelPath(pathArg)}`
29// Display-friendly: absolute path → ~/relative (for paths under home, e.g. ~/ptdisk/...)
30export const tildePath = (pathArg: string): string => {
31 const home = os.homedir()
32 return pathArg.startsWith(home) ? pathArg.replace(home, '~') : pathArg