/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

var fs = require('fs')
var path = require('path')
var request = require('request')
var cdnUrl = 'https://s1.analysys.cn/libs/??'
var version = '1.0.0'

// js集合
var jslibs = {
  'es5': [
    'es5-shim/4.5.7/es5-shim.min.js',
    'es5-shim/4.5.7/es5-sham.min.js'
  ],
  '3rd': [
    'vue/2.5.2/vue.js',
    'vue-router/2.7.0/vue-router.min.js',
    'vuex/3.0.0/vuex.min.js',
    'jquery/3.3.1/jquery.min.js',
    'lodash.js/4.17.5/lodash.min.js',
    'jqueryui/1.12.1/jquery-ui.min.js',
    'twitter-bootstrap/3.3.7/js/bootstrap.min.js',
    'jsPlumb/2.8.5/js/jsplumb.min.js',
    'clipboard.js/2.0.1/clipboard.min.js',
    'd3/3.3.6/d3.min.js',
    'echarts/4.1.0/echarts.min.js',
    'dayjs/1.7.8/dayjs.min.js',
    'codemirror/5.43.0/codemirror.min.js',
    'codemirror/5.43.0/mode/sql/sql.min.js',
    'codemirror/5.43.0/addon/hint/show-hint.min.js',
    'codemirror/5.43.0/addon/hint/sql-hint.min.js',
    'codemirror/5.43.0/mode/textile/textile.min.js',
    'codemirror/5.43.0/mode/shell/shell.min.js',
    'codemirror/5.43.0/mode/python/python.min.js',
    'codemirror/5.43.0/addon/hint/xml-hint.min.js',
    'codemirror/5.43.0/mode/xml/xml.min.js',
    'html2canvas/0.5.0-beta4/html2canvas.min.js',
    'canvg/1.5/canvg.min.js'
  ],
  'local': []
}

// css集合
csslibs = {
  'base': [
    'normalize/7.0.0/normalize.min.css',
    'twitter-bootstrap/3.3.7/css/bootstrap.min.css',
    '-/@analysys/reset.css@1.0.1',
    '-/@vue/animate.css@'
  ],
  '3rd': [
    'highlight.js/9.13.1/styles/vs.min.css',
    'jsPlumb/2.8.5/css/jsplumbtoolkit-defaults.min.css',
    'codemirror/5.43.0/codemirror.min.css',
    'codemirror/5.20.0/theme/mdn-like.min.css',
    'codemirror/5.43.0/addon/hint/show-hint.min.css'
  ]
}

// 创建文件夹目录
var dirPath = path.resolve(__dirname, '..', 'src/combo/' + version)

if (!fs.existsSync(dirPath)) {
  fs.mkdirSync(dirPath)
  console.log('文件夹创建成功')
} else {
  console.log('文件夹已存在')
}

var jsKeys = Object.keys(jslibs)
var jsUrl = jsKeys.map(v => {
  return jslibs[v].join()
})

jsUrl.forEach((v, i) => {
  var url = cdnUrl + v
  console.log(url)
  var stream = fs.createWriteStream(path.join(dirPath, jsKeys[i] + '.js'), { encoding: 'utf-8' })
  request(url).pipe(stream).on('close', function (err) {
    if (!err) {
      console.log('文件[' + version + '/' + jsKeys[i] + '.js' + ']下载完毕')
    }
  })
})

var cssKeys = Object.keys(csslibs)
var cssUrl = cssKeys.map(v => {
  return csslibs[v].join()
})

cssUrl.forEach((v, i) => {
  var url = cdnUrl + v
  console.log(url)
  var stream = fs.createWriteStream(path.join(dirPath, cssKeys[i] + '.css'), { encoding: 'utf-8' })
  request(url).pipe(stream).on('close', function (err) {
    if (!err) {
      console.log('文件[' + version + '/' + cssKeys[i] + '.css' + ']下载完毕')
    }
  })
})
