bia
Version:
a tool for download git repository
233 lines (228 loc) • 10.8 kB
JavaScript
/*
* @Author: hzxulin@yeah.net
* @Date: 2018-02-01 14:04:04
* @Last Modified by: hzxulin@yeah.net
* @Last Modified time: 2018-12-05 15:55:12
*/
const path = require('path')
const utils = require('./utils')
const question = require('./question')
const IOS_CONFIG = require('../../config/ios.json')
module.exports = (cmd, opts) => {
switch (cmd) {
case 'list': {
// 列表相关
if (opts.config) {
question.chooseConfigOperate().then(res => {
switch (res) {
case 'add': {
// 添加配置信息
question.getUpdateConfig().then(res => {
let iosConfList = [res].concat(IOS_CONFIG.list)
let newIosConf = Object.assign({}, IOS_CONFIG, {
list: iosConfList,
})
return utils.updateConfig(newIosConf)
}).then(() => {
console.log('== 配置文件添加成功 ==')
}).catch(err => {
console.log(err)
})
break
}
case 'update': {
// 更新配置信息
let nameIndex = 0
utils.getConfigList().then(res => {
return question.getConfigNameIndex(res)
}).then(res => {
nameIndex = res
return question.getUpdateConfig(IOS_CONFIG.list[nameIndex])
}).then(res => {
let iosConfList = IOS_CONFIG.list
iosConfList.splice(nameIndex, 1, res)
let newIosConf = Object.assign({}, IOS_CONFIG, {
list: iosConfList,
})
return utils.updateConfig(newIosConf)
}).then(() => {
console.log('== 配置文件更新成功 ==')
}).catch(err => {
console.log(err)
})
break
}
case 'delete': {
// 删除配置信息
let nameIndex = 0
utils.getConfigList().then(res => {
return question.getConfigNameIndex(res)
}).then(res => {
nameIndex = res
return utils.removeApp(IOS_CONFIG.list[nameIndex].boundId)
}).then(() => {
let iosConfList = IOS_CONFIG.list
iosConfList.splice(nameIndex, 1)
let newIosConf = Object.assign({}, IOS_CONFIG, {
list: iosConfList,
})
return utils.updateConfig(newIosConf)
}).then(() => {
console.log('== 配置文件更新成功 ==')
}).catch(err => {
console.log(err)
})
break
}
case 'import': {
// 导入配置
let dist = path.resolve(__dirname, '../../config/ios.json')
question.chooseImportFile().then(res => {
utils.moveFileToDist(res, dist).then(res => {
console.log(`== 已成功导入 ${res} 文件 ==`)
}).catch(err => {
console.log(err)
})
})
break
}
case 'export': {
// 导出配置
let ori = path.resolve(__dirname, '../../config/ios.json')
question.chooseOutputFile().then(res => {
utils.moveFileToDist(ori, res).then(res => {
console.log(`== 已成功导出 ${res} 文件 ==`)
}).catch(err => {
console.log(err)
})
})
break
}
default: {
break
}
}
})
} else {
utils.showConfigList().then(() => {
console.log('== 信息输出完成,请查看 ==')
}).catch(err => {
console.log(err)
})
}
break
}
case 'default':
default: {
// 默认 simulator 功能
if (opts.start) {
// 启动simulator
utils.getIphoneList().then(res => {
return question.chooseIphone(res)
}).then(res => {
return utils.startSimulator(res)
}).then(res => {
console.log(`== ${res} 正在启动中... ==`)
}).catch(res => {
console.log(`== ${res} 正在启动中... ==`)
})
} else if (opts.install) {
// 安装app
let nameIndex = 0
// 存在-a 指定app的话,先查找list打开,不存在则使用list
if (opts.app) {
for (let i = 0; i < IOS_CONFIG.list.length; i++) {
if (IOS_CONFIG.list[i].name == opts.app) {
nameIndex = i
utils.downloadApp(IOS_CONFIG.list[nameIndex].repoType, IOS_CONFIG.list[nameIndex].repoUrl).then(res => {
return utils.installApp(res, IOS_CONFIG.list[nameIndex].packageName)
}).then(() => {
console.log(`== ${IOS_CONFIG.list[nameIndex].name} app安装完成 ==`)
}).catch(err => {
console.log(err)
})
return false
}
}
}
// 读取配置文件安装app
utils.getConfigList().then(res => {
return question.getConfigNameIndex(res)
}).then(res => {
nameIndex = res
return utils.downloadApp(IOS_CONFIG.list[nameIndex].repoType, IOS_CONFIG.list[nameIndex].repoUrl)
}).then(res => {
return utils.installApp(res, IOS_CONFIG.list[nameIndex].packageName)
}).then(() => {
console.log(`== ${IOS_CONFIG.list[nameIndex].name} app安装完成 ==`)
}).catch(err => {
console.log(err)
})
} else if (opts.open) {
// 打开app
let nameIndex = 0
// 存在-a 指定app的话,先查找list打开,不存在则使用list
if (opts.app) {
for (let i = 0; i < IOS_CONFIG.list.length; i++) {
if (IOS_CONFIG.list[i].name == opts.app) {
nameIndex = i
utils.openAppByBoundId(IOS_CONFIG.list[nameIndex].boundId).then(() => {
console.log(`== ${IOS_CONFIG.list[nameIndex].name} app正在打开中 ==`)
}).catch(err => {
console.log(err)
})
return false
}
}
}
// 读取配置文件打开app
utils.getConfigList().then(res => {
return question.getConfigNameIndex(res)
}).then(res => {
nameIndex = res
return utils.openAppByBoundId(IOS_CONFIG.list[nameIndex].boundId)
}).then(() => {
console.log(`== ${IOS_CONFIG.list[nameIndex].name} app正在打开中 ==`)
}).catch(err => {
console.log(err)
})
} else if (opts.url) {
// 打开url
let nameIndex = 0
// 存在-a 指定app的话,先查找list打开,不存在则使用list
if (opts.app == 'sf' || opts.app == 'safari') {
utils.openUrlByScheme(opts.url).then(() => {
console.log('== url正在用 safari 打开中 ==')
}).catch(err => {
console.log(err)
})
return false
} else if (opts.app) {
for (let i = 0; i < IOS_CONFIG.list.length; i++) {
if (IOS_CONFIG.list[i].name == opts.app) {
nameIndex = i
utils.openUrlByScheme(opts.url, IOS_CONFIG.list[nameIndex].scheme).then(() => {
console.log(`== ${IOS_CONFIG.list[nameIndex].name} url正在打开中 ==`)
}).catch(err => {
console.log(err)
})
return false
}
}
}
// 读取配置文件打开url
utils.getConfigList().then(res => {
return question.getConfigNameIndex(res)
}).then(res => {
nameIndex = res
return utils.openUrlByScheme(opts.url, IOS_CONFIG.list[nameIndex].scheme)
}).then(() => {
console.log(`== ${IOS_CONFIG.list[nameIndex].name} url正在打开中 ==`)
}).catch(err => {
console.log(err)
})
}
break
}
}
}