@freik/files
Version:
File and Path utilities
3 lines (2 loc) • 1.68 kB
JavaScript
import*as o from"os";import*as a from"child_process";import*as e from"path";import{promises as c}from"fs";import{promisify as l}from"util";const p=l(a.exec);function x(t,r){const n=r&&r[0]!=="."?"."+r:r||"";return e.join(o.tmpdir(),`${t}-tmp-${process.pid}${n}`)}function f(t){const r=e.extname(t);return r&&r.substring(1)}function h(t,r){const n=f(t);r&&r.length>1&&r[0]==="."&&(r=r.substring(1));let i=t.substring(0,t.length-n.length);return i.endsWith(".")||(i+="."),i+r}function s(t){return t.replaceAll("\\","/")}function b(t){return t.endsWith("\\")||t.endsWith("/")?s(t):s(t+e.sep)}function A(t){return s(e.resolve(s(t)))}function W(...t){return s(e.join(...t))}function j(t){return s(e.dirname(t))}async function y(){switch(o.platform()){case"win32":{const{stdout:t,stderr:r}=await p("wmic logicaldisk get name");return r.length>0?[]:t.split(`\r\r
`).filter(n=>/[A-Za-z]:/.test(n)).map(n=>n.trim())}case"darwin":return(await c.readdir("/Volumes")).map(r=>e.join("/Volumes",r));default:return["linux NYI"]}}const g=[["?","\u0241"],["*","\u2217"],[":","\u0589"],[";","\u037E"],["/","\u2571"],["\\","\u2572"],["|","\u2503"],["<","\u02C2"],[">","\u02C3"],['"',"\uFF02"]];function D(t,r){let n=t;for(const[i,u]of g)n.indexOf(i)>=0&&(n=n.replaceAll(i,u));return n.endsWith(".")&&!r&&(n=n.substring(0,n.length-1)+"\u2024"),n.trim()}function G(t){let r=t;for(const[n,i]of[...g,["\u2024","\u2024"]])r.indexOf(i)>=0&&(r=r.replaceAll(i,n));return r.trim()}const $=e.basename,v=e.extname;export{$ as Basename,h as ChangeExt,D as CleanFileName,j as DirName,G as DirtyFileName,v as Extname,f as GetExtNoDot,y as GetRoots,x as GetTemp,W as Join,A as Resolve,b as TrailingSlash,s as Xplat};