mirror of
https://github.com/OliveTin/OliveTin
synced 2025-12-18 03:55:32 +00:00
45 lines
1.6 KiB
JavaScript
45 lines
1.6 KiB
JavaScript
// NOTICE: This file is generated by Rollup. To modify it,
|
|
// please instead edit the ESM counterpart and rebuild with Rollup (npm run build).
|
|
'use strict';
|
|
|
|
const node_path = require('node:path');
|
|
const node_fs = require('node:fs');
|
|
|
|
/**
|
|
* Return the resolved file path, based on whether the provided parameter is
|
|
* a directory or looks like a directory (ends in `path.sep`), in which case the file
|
|
* name will be `location/defaultFileName`.
|
|
*
|
|
* If location points to a file or looks like a file, then it will just use that file.
|
|
*
|
|
* @param {string} location - The name of file or directory to be used
|
|
* @param {string} cwd - Current working directory. Used for tests
|
|
* @param {string} defaultFileName - Default filename to use when location is a directory
|
|
* @returns {string} Resolved path to the file
|
|
*/
|
|
function resolveFilePath(location, cwd, defaultFileName) {
|
|
/*
|
|
* Make sure path separators are normalized for environment/os.
|
|
* Also, keep trailing path separator if present.
|
|
*/
|
|
const normalizedLocation = node_path.normalize(location);
|
|
|
|
const resolvedLocation = node_path.resolve(cwd, normalizedLocation);
|
|
|
|
// If the location path ends with a separator, we assume is a directory.
|
|
const looksLikeADirectory = location.endsWith(node_path.sep);
|
|
|
|
if (
|
|
looksLikeADirectory ||
|
|
node_fs.lstatSync(resolvedLocation, { throwIfNoEntry: false })?.isDirectory()
|
|
) {
|
|
// Return path to provided directory with the specified file name.
|
|
return node_path.join(resolvedLocation, defaultFileName);
|
|
}
|
|
|
|
// Return normalized path to file.
|
|
return resolvedLocation;
|
|
}
|
|
|
|
module.exports = resolveFilePath;
|