12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- "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
- };
- };
|