aboutsummaryrefslogtreecommitdiff
path: root/node_modules/workbox-build/src/lib/get-file-details.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/workbox-build/src/lib/get-file-details.js')
-rw-r--r--node_modules/workbox-build/src/lib/get-file-details.js66
1 files changed, 66 insertions, 0 deletions
diff --git a/node_modules/workbox-build/src/lib/get-file-details.js b/node_modules/workbox-build/src/lib/get-file-details.js
new file mode 100644
index 00000000..afd32628
--- /dev/null
+++ b/node_modules/workbox-build/src/lib/get-file-details.js
@@ -0,0 +1,66 @@
+/*
+ Copyright 2017 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+const glob = require('glob');
+const path = require('path');
+
+const errors = require('./errors');
+const getFileSize = require('./get-file-size');
+const getFileHash = require('./get-file-hash');
+
+module.exports = (globOptions) => {
+ const {
+ globDirectory,
+ globFollow,
+ globIgnores,
+ globPattern,
+ globStrict,
+ } = globOptions;
+ let globbedFiles;
+ 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) {
+ throw new Error(errors['useless-glob-pattern'] + ' ' +
+ JSON.stringify({globDirectory, globPattern, globIgnores}, null, 2));
+ }
+
+ const fileDetails = globbedFiles.map((file) => {
+ const fullPath = path.join(globDirectory, file);
+ const fileSize = getFileSize(fullPath);
+ if (fileSize === null) {
+ return null;
+ }
+
+ const fileHash = getFileHash(fullPath);
+ return {
+ file: `${path.relative(globDirectory, fullPath)}`,
+ hash: fileHash,
+ size: fileSize,
+ };
+ });
+
+ // If !== null, means it's a valid file.
+ return fileDetails.filter((details) => details !== null);
+};