const path = require('path')
const fs = require('fs')
var compressing = require('compressing')
const axios = require('axios')
const child_process = require('child_process')

function parseTime(time, format = 'yyyy-MM-dd hh:mm:ss') {
  const date = time instanceof Date ? time : new Date(time)

  const o = {
    'M+': date.getMonth() + 1, // 月份
    'd+': date.getDate(), // 日
    'h+': date.getHours(), // 小时
    'm+': date.getMinutes(), // 分
    's+': date.getSeconds(), // 秒
    'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
    'S': date.getMilliseconds() // 毫秒
  }
  if (/(y+)/.test(format)) {
    format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
  }
  for (const k in o) {
    if (new RegExp('(' + k + ')').test(format)) {
      format = format.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
    }
  }
  return format
}

/**
 * 打包插件 v2.0
 * youfool
 */
class IncrePack {
  constructor(options) {
    this.options = options
  }
  apply(compiler) {
    const projectPath = path.join(__dirname, '../')
    const distPath = projectPath + 'dist'
    compiler.hooks.done.tap('IncrePack', async (compilation, callback) => {
      // 排除开发环境
      if (process.env.ENV !== 'development') {
        
        const increName = `${this.options.name}.zip`
        // 打包压缩
        const tempFile = projectPath + '/' + increName
        compressing.zip.compressDir(distPath, tempFile, { ignoreBase: true })
          .then(() => {
            // 剪切回dist目录下
            fs.renameSync(tempFile, distPath + '/' + increName)
            console.log('------------------打包成功------------------')
          })
          .catch(err => {
            console.error(err)
          })
      }
    })
  }
}
module.exports = IncrePack
