UNPKG

eap-cli

Version:

edgeros 脚手架

123 lines (106 loc) 3.17 kB
var Client = require('ftp'); var configJson = require('../config/edgeros.config.json'); var fs = require('fs'); var path = require('path'); var ora = require('ora'); var chalk = require('chalk'); var client = new Client(); var serverBasePath = '/apps/workspace'; function uploadProject(callback) { client.on('ready', () => { client.list('/apps/', false, (err, list) => { let flag = false; list.forEach((value) => { if(value.name === 'workspace') { flag = true; return; } }); if(flag) { spinner = ora('\n 开始清理模拟器缓存,请等待...'); spinner.start(); client.rmdir(serverBasePath, true, (err) => { spinner.stop(); if(err) { console.log(err); } else { console.log(chalk.green(`\n √ 模拟器缓存清理完毕!`)); client.mkdir(serverBasePath, (err) => { if(err) { console.log(err); } console.log('开始部署项目...'); uploadDir(); }); } }); } else { client.mkdir(serverBasePath, (err) => { if(err) { console.log(err); } console.log('开始部署项目...'); uploadDir(); }); } }); }); client.on('error', (err) => { console.log(`连接错误${err}`); }); client.on('end', () => { console.log('项目部署完成'); callback(); }); client.connect({ host: configJson.ftp.ip, port: configJson.ftp.port, user: configJson.ftp.username, password: configJson.ftp.password }); } function mkdir(projectPath){ client.mkdir(`${serverBasePath}${projectPath}`, (err) => { if(err) { console.log(err); } }); } function sendFile(filePath, projectPath,) { client.put(filePath, serverBasePath + projectPath, (err) => { if(err) { console.log(chalk.red(`上传${filePath}文件报错`)) console.log(err); }else { console.log(chalk.green(`\n √ ${filePath}`)); } }); } function uploadDir() { mkdir(getThisDir()); traverseFolders(process.cwd(), getThisDir()); client.end(); } function traverseFolders(filePath, projectPath) { if(filePath){ let files = fs.readdirSync(filePath); files.forEach((file) => { const fileDir = path.join(filePath, file); const stat = fs.statSync(fileDir); if(stat.isDirectory()) { mkdir(`${projectPath}/${file}`); traverseFolders(fileDir, `${projectPath}/${file}`); } if(stat.isFile()) { sendFile(fileDir, `${projectPath}/${file}`); } }); } } function getThisDir() { const path = process.cwd(); return '/' + path.substring(path.lastIndexOf('\\')+1); } module.exports = { uploadProject: uploadProject }