@capawesome/cli
Version:
The Capawesome Cloud Command Line Interface (CLI) to manage Live Updates and more.
28 lines (27 loc) • 1.08 kB
JavaScript
import { MANIFEST_JSON_FILE_NAME } from '../config/index.js';
import { createBufferFromPath } from './buffer.js';
import { getFilesInDirectoryAndSubdirectories, writeFile } from './file.js';
import { createHash } from './hash.js';
const ignoreFiles = ['.DS_Store', MANIFEST_JSON_FILE_NAME];
export const generateManifestJson = async (path) => {
const manifestItems = [];
// Get all files
const files = await getFilesInDirectoryAndSubdirectories(path);
// Iterate over each file
for (const [index, file] of files.entries()) {
const fileBuffer = await createBufferFromPath(file.path);
const checksum = await createHash(fileBuffer);
const sizeInBytes = fileBuffer.byteLength;
// Skip ignored files
if (ignoreFiles.includes(file.name)) {
continue;
}
manifestItems.push({
checksum,
href: file.href,
sizeInBytes,
});
}
// Write the manifest file
writeFile(`${path}/${MANIFEST_JSON_FILE_NAME}`, JSON.stringify(manifestItems, null, 2));
};