mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-28 11:25:16 +00:00
70 lines
1.5 KiB
JavaScript
70 lines
1.5 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
/*
|
||
|
Copyright 2018 Google LLC
|
||
|
|
||
|
Use of this source code is governed by an MIT-style
|
||
|
license that can be found in the LICENSE file or at
|
||
|
https://opensource.org/licenses/MIT.
|
||
|
*/
|
||
|
const glob = require('glob');
|
||
|
|
||
|
const upath = require('upath');
|
||
|
|
||
|
const errors = require('./errors');
|
||
|
|
||
|
const getFileSize = require('./get-file-size');
|
||
|
|
||
|
const getFileHash = require('./get-file-hash');
|
||
|
|
||
|
module.exports = ({
|
||
|
globDirectory,
|
||
|
globFollow,
|
||
|
globIgnores,
|
||
|
globPattern,
|
||
|
globStrict
|
||
|
}) => {
|
||
|
let globbedFiles;
|
||
|
let warning;
|
||
|
|
||
|
try {
|
||
|
globbedFiles = glob.sync(globPattern, {
|
||
|
cwd: globDirectory,
|
||
|
follow: globFollow,
|
||
|
ignore: globIgnores,
|
||
|
strict: globStrict
|
||
|
});
|
||
|
} catch (err) {
|
||
|
throw new Error(errors['unable-to-glob-files'] + ` '${err.message}'`);
|
||
|
}
|
||
|
|
||
|
if (globbedFiles.length === 0) {
|
||
|
warning = errors['useless-glob-pattern'] + ' ' + JSON.stringify({
|
||
|
globDirectory,
|
||
|
globPattern,
|
||
|
globIgnores
|
||
|
}, null, 2);
|
||
|
}
|
||
|
|
||
|
const fileDetails = globbedFiles.map(file => {
|
||
|
const fullPath = upath.join(globDirectory, file);
|
||
|
const fileSize = getFileSize(fullPath);
|
||
|
|
||
|
if (fileSize === null) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
const fileHash = getFileHash(fullPath);
|
||
|
return {
|
||
|
file: `${upath.relative(globDirectory, fullPath)}`,
|
||
|
hash: fileHash,
|
||
|
size: fileSize
|
||
|
};
|
||
|
}); // If !== null, means it's a valid file.
|
||
|
|
||
|
const globbedFileDetails = fileDetails.filter(details => details !== null);
|
||
|
return {
|
||
|
globbedFileDetails,
|
||
|
warning
|
||
|
};
|
||
|
};
|