/// import "source-map-support/register" import * as fs from "fs-extra" import * as pathModule from "path" import * as wrench from "wrench" import * as commander from "commander" import * as colors from "colors" let program = commander program.version("0.0.1") .command("install [package]") .action((name: string) => { if (name) { install(name) } else { installAll() } }) program.command("list [package]") .action((name: string) => { if (name) { list(name) } else { listAll() } }) //program.command("help", "Print out help message", { isDefault: true }).action((arg) => { // program.help() //}) program.parse(process.argv) if (program.args[0] || program.args.length == 0) { //program.help() //process.exit(0) } function list(name: string) { let partialDir = pathModule.join(__dirname, "../../partial-src") let files = wrench.readdirSyncRecursive(partialDir) files = files.filter(file => pathModule.extname(file) === ".ts") // no directory files = files.filter(file => pathModule.dirname(file) !== ".") let dirs = fs.readdirSync(partialDir).filter(item => !pathModule.extname(item)) // filter out what user want let matches = [] for (let file of files) { let basename = pathModule.basename(file, ".ts") if (basename.toLowerCase().indexOf(name.toLowerCase()) >= 0) { matches.push(file) } } for (let file of matches) { console.log(file) } } function install(name: string) { name = pathModule.basename(name, ".ts") let partialDir = pathModule.join(__dirname, "../../partial-src") let files = wrench.readdirSyncRecursive(partialDir) files = files.filter(file => pathModule.extname(file) === ".ts") // no directory files = files.filter(file => pathModule.dirname(file) !== ".") // filter out what user want let toAdd = [] for (let file of files) { let basename = pathModule.basename(file, ".ts") if (basename.toLowerCase() === name.toLowerCase()) { toAdd.push(file) } } for (let file of toAdd) { installFile(file) } } function installAll() { let partialDir = pathModule.join(__dirname, "../../partial-src") let files = wrench.readdirSyncRecursive(partialDir) files = files.filter(file => pathModule.extname(file) === ".ts") // nodirectory files = files.filter(file => pathModule.dirname(file) !== ".") // no directory for (let file of files) { installFile(file) } } function installFile(relativePath: string) { let partialDir = pathModule.join(__dirname, "../../partial-src") let abs = pathModule.join(partialDir, relativePath) let baseDir = "lib" let dir = pathModule.join(baseDir, pathModule.dirname(relativePath)) console.log(`Install ${relativePath.slice(0, - 3)} to ${pathModule.join(baseDir, relativePath)}`) fs.mkdirpSync(dir) fs.copySync(abs, pathModule.join(baseDir, relativePath)) } function listAll() { let partialDir = pathModule.join(__dirname, "../../partial-src") let files = wrench.readdirSyncRecursive(partialDir) files = files.filter(file => pathModule.extname(file) === ".ts") // nodirectory files = files.filter(file => pathModule.dirname(file) !== ".") for (let file of files) { console.log(file) } } function ensureDir(name) { fs.mkdirpSync(name) }