/* global hexo */

'use strict';

hexo.on('generateBefore', () => {
  // Merge config.
  require('./lib/config')(hexo);
  // Add filter type `theme_inject`
  require('./lib/injects')(hexo);
});

hexo.on('generateAfter', () => {
  if (!hexo.theme.config.reminder) return;
  const https = require('https');
  const path = require('path');
  const { version } = require(path.normalize('../../package.json'));
  https.get('https://api.github.com/repos/theme-next/hexo-theme-next/releases/latest', {
    headers: {
      'User-Agent': 'Theme NexT Client'
    }
  }, res => {
    let result = '';
    res.on('data', data => {
      result += data;
    });
    res.on('end', () => {
      try {
        let latest = JSON.parse(result).tag_name.replace('v', '').split('.');
        let current = version.split('.');
        let isOutdated = false;
        for (let i = 0; i < Math.max(latest.length, current.length); i++) {
          if (!current[i] || latest[i] > current[i]) {
            isOutdated = true;
            break;
          }
          if (latest[i] < current[i]) {
            break;
          }
        }
        if (isOutdated) {
          hexo.log.warn(`Your theme NexT is outdated. Current version: v${current.join('.')}, latest version: v${latest.join('.')}`);
          hexo.log.warn('Visit https://github.com/theme-next/hexo-theme-next/releases for more information.');
        } else {
          hexo.log.info('Congratulations! Your are using the latest version of theme NexT.');
        }
      } catch (err) {
        hexo.log.error('Failed to detect version info. Error message:');
        hexo.log.error(err);
      }
    });
  }).on('error', err => {
    hexo.log.error('Failed to detect version info. Error message:');
    hexo.log.error(err);
  });
});