const chalk = require('chalk');
const isAliEnv = require('is-ali-env');

function useBigfish(type, pkg) {
  if (process.env.MONITOR === 'none') return;
  isAliEnv().then(val => {
    if (val) {
      let stopMsg = pkg.name === 'roadhog'
        ? `${pkg.name} 宸蹭簬 2019.3.1 鍋滄缁存姢`
        : `${pkg.name} 宸插仠姝㈢淮鎶;
      console.log(`
---
馃挜馃挜馃挜 ${chalk.bold.red(`${stopMsg}锛屼负浜嗘洿濂藉鎮ㄨ繘琛屾湇鍔★紝鎺ㄨ崘浣跨敤 bigfish銆俙)}

閽夐拤缇わ細Bigfish 閲戠墝鏈嶅姟缇� 锛堢兢鍙�21761376锛�
瀹樼綉锛歨ttps://bigfish.alipay.com/
${pkg.name === 'roadhog' ? `鍗囩骇鏂囨。锛歨ttps://bigfish.alipay.com/doc/dgmrg0\n` : `鍗囩骇鏂囨。锛歨ttps://bigfish.alipay.com/doc/tnyo3y\n`}
---
`);
    }
  });
}

const messages = {
  buildComplete: {
    roadhog: [useBigfish],
    'atool-build': [useBigfish],
  },
  devStart: {
    dora: [useBigfish],
  },
  devComplete: {
    roadhog: [useBigfish],
    'atool-build': [useBigfish],
  },
};

function run(type, pkg, opts) {
  try {
    messages[type][pkg.name].forEach(message => {
      if (typeof message === 'string') {
        console.log(message);
      } else if (typeof message === 'function') {
        message(type, pkg, opts);
      }
    })
  } catch (e) {
  }
}

exports.onBuildStart = function (pkg, opts) {
  run('buildStart', pkg, opts);
}

exports.onBuildComplete = function (pkg, opts) {
  run('buildComplete', pkg, opts);
}

exports.onDevStart = function (pkg, opts) {
  run('devStart', pkg, opts);
}

exports.onDevComplete = function (pkg, opts) {
  run('devComplete', pkg, opts);
}