|
| 1 | +/* eslint-disable @typescript-eslint/no-var-requires */ |
| 2 | +const os = require("os"); |
| 3 | +const fs = require("fs"); |
| 4 | +const path = require("path"); |
| 5 | +const archiver = require("archiver"); |
| 6 | +const version = require("./package.json").version; |
| 7 | + |
| 8 | +const archiveDirectory = "dist"; |
| 9 | +const platform = os.platform(); |
| 10 | +const arch = os.arch(); |
| 11 | + |
| 12 | +// Determine the packaging format based on the OS |
| 13 | +const isWindows = platform === "win32"; |
| 14 | +const archiveFormat = isWindows ? "zip" : "tar"; |
| 15 | +const archiveExtension = isWindows ? "zip" : "tar.gz"; |
| 16 | + |
| 17 | +console.log("Building source archive ..."); |
| 18 | + |
| 19 | +// Ensure that the archive destination directory exists |
| 20 | +if (!fs.existsSync(archiveDirectory)) { |
| 21 | + fs.mkdirSync(archiveDirectory); |
| 22 | +} |
| 23 | + |
| 24 | +// Create the archive file with the same name as the package directory |
| 25 | +const archiveFileName = `ScanCode-Workbench-${version}-${platform}-${arch}-src.${archiveExtension}`; |
| 26 | +const archiveFilePath = path.join(archiveDirectory, archiveFileName); |
| 27 | +const output = fs.createWriteStream(archiveFilePath); |
| 28 | +const archive = archiver(archiveFormat, { gzip: true }); |
| 29 | + |
| 30 | +output.on("close", () => { |
| 31 | + console.log(`Created source archive at ${archiveFilePath}`); |
| 32 | +}); |
| 33 | + |
| 34 | +archive.pipe(output); |
| 35 | + |
| 36 | +archive.glob("**/*", { |
| 37 | + dot: true, |
| 38 | + cwd: process.cwd(), |
| 39 | + ignore: ["dist/**", "out/**", ".git/**"], |
| 40 | +}); |
| 41 | + |
| 42 | +archive.finalize(); |
0 commit comments