import * as plugins from './smartpath.plugins.js'; /* ------------------------------------------ * * ------------ helpers --------------------- * * ------------------------------------------ */ /** * takes a path and makes it absolute * @param localPathArg * @param baseArg * @returns */ export const makeAbsolute = (localPathArg: string, baseArg?: string): string => { let absolutePath: string; let alreadyAbsolute = plugins.path.isAbsolute(localPathArg); if (!alreadyAbsolute && baseArg && !baseArg.startsWith('.')) { absolutePath = plugins.path.join(baseArg, localPathArg); } else if (!alreadyAbsolute) { if (baseArg) { plugins.path.join(baseArg, localPathArg); } absolutePath = plugins.path.resolve(localPathArg); } else { absolutePath = localPathArg; } return absolutePath; }; /* * like makeAbsolute, but takes different complex contructs like arrays and objects */ export const toAbsolute = (relativeArg: string | string[], baseArg?: string): string | string[] => { if (typeof relativeArg === 'string') { return makeAbsolute(relativeArg, baseArg); } else if (Array.isArray(relativeArg)) { let relativeArray = relativeArg; let absoluteArray: string[] = []; for (let key in relativeArray) { absoluteArray.push(makeAbsolute(relativeArray[key], baseArg)); } return absoluteArray; } else { console.error( 'smartpath.absolute() could not make sense of the input. ' + 'Input is neither String nor Array' ); return null; } };