qspark-deploy
Version:
齐圣园区自动化部署
86 lines (78 loc) • 2.87 kB
JavaScript
#!/usr/bin/env node
const fs = require("fs");
const path = require('path')
const gitDir = path.resolve('./.git');
const gitInfo = require("../git_info");
const axios = require("axios");
const inquirer = require('inquirer');
const autoMerge = require('./merge');
const {LocalStorage} = require('node-localstorage');
const localStorage = new LocalStorage('./node_modules');
const simpleGit = require('simple-git');
let repoDir = path.resolve('../') // 仓库根目录
const simplegit = simpleGit(repoDir)
async function getList() {
if(localStorage.getItem('__cache-merge')){
autoMerge(localStorage)
return
}
const password = await inquirer.prompt([{
type: 'password',
message: '输入密码',
name: 'value',
choices:['确定','取消'],
}])
let branchList = await simplegit.branch({'-r':true});
branchList = branchList.all.map(item=>item.split('origin/')[1])
const branchListChoice = await inquirer.prompt([{
type: 'list',
name: 'choice',
message: '选择主分支:',
default: '园区临时修改',
choices: branchList
}])
localStorage.setItem('__cache-sourceBranch',branchListChoice.choice)
const dirArr = path.resolve('./').split(path.sep)
const activeProjectName = dirArr[dirArr.length - 1]
const gitInfoScope = gitInfo()
const repositoryArr = gitInfoScope[`remote "origin"`].url.split('/')
const repositoryName = repositoryArr[repositoryArr.length - 1].split('.git')[0]
const res = await axios.get(`http://212.64.24.247:3005/serverTable?password=${password.value}&activeProjectName=${activeProjectName}&repositoryName=${repositoryName}&isTest=0`)
if (res.data.code != 1) {
console.log(res.data.message);
return
}
const answers = await inquirer.prompt([{
type: 'checkbox',
message: '选择部署渠道:',
name: 'values',
choices: res.data.data.allServes,
validate(answer) {
if (answer.length < 1) {
return '请至少选择一个渠道.';
}
return true;
}
}])
res.data.data.allServes = res.data.data.allServes.filter(item => {
return answers.values.includes(item.name)
})
const choiceBack = await inquirer.prompt([{
type: 'confirm',
name: 'choice',
message: '确定部署:',
default: true,
}])
if(choiceBack.choice){
localStorage.setItem('__cache-merge', JSON.stringify(res.data.data))
autoMerge(localStorage)
}
}
if (!fs.existsSync(gitDir)) {
// console.log('这里没有GIT目录')
repoDir = path.resolve('../')
getList()
} else {
console.log('GIT目录')
repoDir = path.resolve('./')
}