Release v0.1.2
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
'use strict';
|
||||
|
||||
const path = require('path');
|
||||
|
||||
function normalizeRoot(projectPath) {
|
||||
return path.resolve(String(projectPath || process.cwd()));
|
||||
}
|
||||
|
||||
function isPathInside(rootPath, targetPath) {
|
||||
const root = normalizeRoot(rootPath);
|
||||
const target = path.resolve(String(targetPath || ''));
|
||||
const relative = path.relative(root, target);
|
||||
return relative === '' || (relative && !relative.startsWith('..') && !path.isAbsolute(relative));
|
||||
}
|
||||
|
||||
function resolveProjectPath(projectPath, rawPath) {
|
||||
if (!rawPath || typeof rawPath !== 'string') {
|
||||
throw new Error('path is required.');
|
||||
}
|
||||
|
||||
const root = normalizeRoot(projectPath);
|
||||
const targetPath = path.isAbsolute(rawPath)
|
||||
? path.resolve(rawPath)
|
||||
: path.resolve(root, rawPath);
|
||||
|
||||
if (!isPathInside(root, targetPath)) {
|
||||
throw new Error(`Path is outside the Cocos project: ${rawPath}`);
|
||||
}
|
||||
|
||||
return targetPath;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
isPathInside,
|
||||
resolveProjectPath,
|
||||
};
|
||||
Reference in New Issue
Block a user