/*
 * @Author: Fancy
 * @Date: 2024-03-11 15:48:09
 * @Description: 自动化部署插件
 * @LastEditors: Spring
 * @LastEditTime: 2024-03-12 12:08:10
 */
// import path from 'path';
const path = require('path');
const Client = require('ssh2-sftp-client');
const dayjs = require('dayjs');

const config = {
  ip: '10.10.9.219', // ssh地址 例如41.143.160.222
  username: 'root', // ssh 用户名
  port: '22', // 端口默认22
  password: 'Fancy1024', // ssh 密码
  path: '/home/wwwroot/med-web-static-3.0', // 操作开始文件夹 可以直接指向配置好的地址
  rmpath: '/home/wwwroot/med-web-static-3.0' // 需要删除的文件夹
};
// const config = {
//   ip: '27.221.101.69', // ssh地址 例如41.143.160.222
//   username: 'root', // ssh 用户名
//   port: '6666', // 端口默认22
//   password: 'w7DQrI33Q9WQqPS5', // ssh 密码
//   path: '/mnt/module/optfees/', // 操作开始文件夹 可以直接指向配置好的地址
//   rmpath: '/mnt/module/optfees/' // 需要删除的文件夹
// };
const timeTipLog = (tip) => {
  console.log(tip, dayjs().format('YYYY-MM-DD HH:mm:ss'));
};

const connectSSh = () => {
  const sftp = new Client();
  sftp
    .connect({
      host: config.ip,
      port: config.port,
      username: config.username,
      password: config.password
    })
    .then(async () => {
      timeTipLog('删除旧文件');
      await sftp.rmdir(config.rmpath, true);
      timeTipLog('删除成功');
    })
    .then(async () => {
      timeTipLog('正在更新');
      await sftp.uploadDir(path.resolve('./dist'), config.path);
    })
    .then(() => {
      timeTipLog('部署完成');
      sftp.end();
    })
    .catch((err) => {
      console.log(err, '失败');
      sftp.end();
    });
};
// 执行
connectSSh();
