fin
Version:
Developer CLI for Fin. Fin is the easiest way to launch your own SaaS.
39 lines (30 loc) • 924 B
JavaScript
const { ZipFile } = require('yazl')
const fs = require('fs-extra')
const globby = require('globby')
const path = require('path')
const streamToBuffer = require('./stream-to-buffer')
module.exports = async (program, deployment) => {
const files = await globby('**/*', {
cwd: deployment.root,
gitignore: true
})
const mtime = new Date(1540000000000)
const zipFile = new ZipFile()
const zipBuffer = await new Promise((resolve, reject) => {
files
.sort()
.forEach((file) => {
const filePath = path.join(deployment.root, file)
const stream = fs.createReadStream(filePath)
const stat = fs.statSync(filePath)
stream.on('error', reject)
zipFile.addReadStream(stream, file, { mode: stat.mode, mtime })
})
zipFile.end()
streamToBuffer(zipFile.outputStream)
.then(resolve)
.catch(reject)
})
return zipBuffer
}