files = grunt.option('files').split(',');
}
- const inAMD = path.basename(cwd) == 'amd';
+ // If the cwd is the amd directory in the current component then it will be empty.
+ // If the cwd is a child of the component's AMD directory, the relative directory will not start with ..
+ const inAMD = !path.relative(`${componentDirectory}/amd`, cwd).startsWith('..');
// Globbing pattern for matching all AMD JS source files.
let amdSrc = [];
const nodes = xpath.select("/libraries/library/location/text()", doc);
nodes.forEach(function(node) {
- let lib = path.join(dirname, node.toString());
+ let lib = path.posix.join(dirname, node.toString());
if (grunt.file.isDir(lib)) {
// Ensure trailing slash on dirs.
lib = lib.replace(/\/?$/, '/');
*/
const getThirdPartyLibsList = relativeTo => {
const fs = require('fs');
+ const path = require('path');
return fetchComponentData().pathList
- .map(componentPath => componentPath.replace(relativeTo, '') + '/thirdpartylibs.xml')
+ .map(componentPath => path.relative(relativeTo, componentPath) + '/thirdpartylibs.xml')
+ .map(componentPath => componentPath.replace(/\\/g, '/'))
.filter(path => fs.existsSync(path))
.sort();
};
/**
* Check whether the supplied path, relative to the Gruntfile.js, is in a known component.
*
- * @param {String} checkPath The path to check
+ * @param {String} checkPath The path to check. This can be with either Windows, or Linux directory separators.
* @returns {String|null}
*/
const getOwningComponentDirectory = checkPath => {
// This ensures that components which are within the directory of another component match first.
const pathList = Object.keys(fetchComponentData().components).sort().reverse();
for (const componentPath of pathList) {
- if (checkPath === componentPath) {
- return componentPath;
- }
- if (checkPath.startsWith(componentPath + path.sep)) {
+ // If the componentPath is the directory being checked, it will be empty.
+ // If the componentPath is a parent of the directory being checked, the relative directory will not start with ..
+ if (!path.relative(componentPath, checkPath).startsWith('..')) {
return componentPath;
}
}