-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathassets.js
More file actions
102 lines (82 loc) · 2.72 KB
/
assets.js
File metadata and controls
102 lines (82 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import { writeFile, readText, getPackageJson, execute } from './utils';
const fs = require('fs');
const program = require('commander');
if (!fs.existsSync('./package.json')) {
console.error('Not found package.json');
process.exit(1);
}
const scanFiles = dir => {
return new Promise(async resolve => {
let result = {};
fs.readdir(dir, async (err, items) => {
let files = items.filter(v => v.indexOf('.') !== 0);
for (let i = 0; i < files.length; i++) {
const item = files[i];
let stat = fs.lstatSync(dir + '/' + item);
if (stat.isDirectory()) {
result[item] = await scanFiles(dir + '/' + item);
} else {
let name = item.substring(0, item.lastIndexOf('.'));
name = name.replace(/\./g, '_');
result[name] = '@' + dir + '/' + item;
}
}
resolve(result);
});
});
};
const App = async (pkgs, forceReset) => {
let _config = {};
const file = await getPackageJson();
if (file?.assets) _config = file?.assets;
if (forceReset) _config = {};
if (!_config?.source) {
const source = await readText('해당 폴더경로를 입력해주세요 : ./');
if (!source) {
console.error('출력 항목은 필수입니다.');
process.exit(1);
}
if (!fs.existsSync(source)) {
console.error('파일을 찾을수가 없어요.');
process.exit(1);
}
_config.source = source;
file.assets = _config;
const text = JSON.stringify(file, null, 2);
await writeFile('./actbase.json', text);
}
if (!_config?.output) {
const output = await readText(
'required 묶음이 나올 파일경로(확장자 포함)를 입력해주세요 : ./',
);
if (!output) {
console.error('경로 항목은 필수입니다.');
process.exit(1);
}
if (fs.existsSync(output)) {
console.error('이미 파일이 존재합니다.');
process.exit(1);
}
_config.output = output;
file.assets = _config;
const text = JSON.stringify(file, null, 2);
await writeFile('./actbase.json', text);
}
const files = await scanFiles(_config?.source);
let response = JSON.stringify(files, null, 2);
response =
'export default ' +
response.replace(/\"@([^\"]*)"/g, "require('./$1')").replace(/"/g, "'");
await writeFile(_config?.output, response);
console.log('Write a file! ');
console.log('Usage: ');
console.log(` import Assets from "${_config?.output}"`);
console.log(' <Image source={Assets.imagename} />');
await execute('git add ' + _config.output);
};
program.option('-r, --reset', 'reset latest file.').parse(process.argv);
var pkgs = program.args;
App(
pkgs,
process.argv.indexOf('-r') > 0 || process.argv.indexOf('--reset') >= 0,
);