iapyang
2 years ago
3 changed files with 107 additions and 1 deletions
@ -0,0 +1,13 @@
|
||||
const workerCmd = require('./cli.worker'); |
||||
|
||||
const cmds = new Map([ |
||||
['worker', workerCmd], |
||||
]); |
||||
|
||||
const cmd = process.argv[1]; |
||||
|
||||
if (cmds.has(cmd)) { |
||||
cmds.get(cmd)?.exec(); |
||||
} else { |
||||
throw new Error('命令不存在'); |
||||
} |
@ -0,0 +1,87 @@
|
||||
const fs = require('fs'); |
||||
const path = require('path'); |
||||
|
||||
function getArgs (startIndex = 1) { |
||||
const args = {}; |
||||
process.argv |
||||
.slice(startIndex, process.argv.length) |
||||
.forEach(arg => { |
||||
// long arg
|
||||
if (arg.slice(0, 2) === '--') { |
||||
const longArg = arg.split('='); |
||||
const longArgFlag = longArg[0].slice(2, longArg[0].length); |
||||
const longArgValue = longArg.length > 1 ? longArg[1] : true; |
||||
args[longArgFlag] = longArgValue; |
||||
// flags
|
||||
} else if (arg[0] === '-') { |
||||
const flags = arg.slice(1, arg.length).split(''); |
||||
flags.forEach(flag => { |
||||
args[flag] = true; |
||||
}); |
||||
} |
||||
}); |
||||
|
||||
return args; |
||||
} |
||||
|
||||
function scanAndCreate(structure, root = process.cwd()) { |
||||
Object.keys(structure) |
||||
.forEach(name => { |
||||
if (typeof structure[name] === 'object') { |
||||
fs.mkdirSync(path.resolve(root, name)); |
||||
|
||||
scanAndCreate(structure[name], path.resolve(root, `./${name}`)); |
||||
} else if (structure[name] === '') { |
||||
fs.appendFileSync(path.resolve(root, name), ''); |
||||
} else if (typeof structure[name] === 'string') { |
||||
const content = fs.readFileSync(structure[name]).toString(); |
||||
|
||||
fs.appendFileSync(path.resolve(root, name), content); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
module.exports = { |
||||
exec: async () => { |
||||
const args = getArgs(process.argv); |
||||
|
||||
if (!args['-init']) { |
||||
throw new Error('command not found'); |
||||
} |
||||
|
||||
if (!args['--name']) { |
||||
throw new Error('fileName not found'); |
||||
} |
||||
|
||||
const name = args['--name']; |
||||
|
||||
const structure = { |
||||
[`${name}_worker`]: { |
||||
'main_thread': { |
||||
action: {}, |
||||
[`${name}_main_thread.ts`]: path.resolve(__dirname, './template/main_thread_template.ts'), |
||||
}, |
||||
utils: { |
||||
'action_type.ts': '', |
||||
}, |
||||
'worker_thread': { |
||||
action: {}, |
||||
[`${name}_worker_thread.ts`]: path.resolve(__dirname, './template/worker_thread_template.ts'), |
||||
}, |
||||
}, |
||||
}; |
||||
|
||||
scanAndCreate(structure); |
||||
}, |
||||
}; |
||||
|
||||
// 结构
|
||||
// -xxx_worker
|
||||
// -|--main_thread
|
||||
// -|--|--action
|
||||
// -|--|--xxx_main_thread.ts
|
||||
// -|--utils
|
||||
// -|--|--action_type.ts
|
||||
// -|--worker_thread
|
||||
// -|--|--action
|
||||
// -|--|--worker_main_thread.ts
|
Loading…
Reference in new issue