UNPKG

1.38 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3const { join, dirname } = require('path');
4const fs = require('fs');
5const { promisify } = require('util');
6const copyFile = promisify(fs.copyFile);
7const mkdir = promisify(fs.mkdir);
8const rimraf = require('rimraf');
9const trace = require('./node-file-trace');
10
11async function cli(
12 action = process.argv[2],
13 files = process.argv.slice(3),
14 outputDir = 'dist',
15 cwd = process.cwd()
16 ) {
17 const opts = {
18 ts: true,
19 mixedModules: true,
20 log: true
21 };
22
23 const { fileList, esmFileList, warnings } = await trace(files, opts);
24 const allFiles = fileList.concat(esmFileList);
25 const stdout = [];
26
27 if (action === 'print') {
28 stdout.push('FILELIST:')
29 stdout.push(...allFiles);
30 stdout.push('\n');
31 if (warnings.length > 0) {
32 stdout.push('WARNINGS:');
33 stdout.push(...warnings);
34 }
35 } else if (action === 'build') {
36 rimraf.sync(join(cwd, outputDir));
37 for (const f of allFiles) {
38 const src = join(cwd, f);
39 const dest = join(cwd, outputDir, f);
40 const dir = dirname(dest);
41 await mkdir(dir, { recursive: true });
42 await copyFile(src, dest);
43 }
44 } else {
45 stdout.push('△ nft - provide an action such as `nft build` or `nft print`.');
46 }
47 return stdout.join('\n');
48}
49
50if (require.main === module) {
51 cli().then(console.log).catch(console.error);
52}
53
54module.exports = cli;
\No newline at end of file