18603046467
3 years ago
17 changed files with 364 additions and 67 deletions
@ -1,7 +1,8 @@
|
||||
const node = require('./node') |
||||
const git = require('./git') |
||||
const overwall = require('./overwall') |
||||
const pip = require('./pip') |
||||
|
||||
module.exports = { |
||||
node, git, overwall |
||||
node, git, pip, overwall |
||||
} |
||||
|
@ -0,0 +1,12 @@
|
||||
module.exports = { |
||||
name: 'PIP加速', |
||||
statusOff: true, |
||||
enabled: null, // 没有开关
|
||||
tip: '如果你没有安装pip则不需要启动它', |
||||
startup: { |
||||
}, |
||||
setting: { |
||||
trustedHost: 'pypi.org', |
||||
registry: ''// 可以选择切换官方或者淘宝镜像
|
||||
} |
||||
} |
@ -0,0 +1,93 @@
|
||||
const pipConfig = require('./config') |
||||
const PipPlugin = function (context) { |
||||
const { config, shell, event, log } = context |
||||
const api = { |
||||
async start () { |
||||
await api.setRegistry({ registry: config.get().plugin.pip.setting.registry }) |
||||
await api.setTrustedHost(config.get().plugin.pip.setting.trustedHost) |
||||
}, |
||||
|
||||
async close () { |
||||
}, |
||||
|
||||
async restart () { |
||||
await api.close() |
||||
await api.start() |
||||
}, |
||||
|
||||
async save (newConfig) { |
||||
await api.setVariables() |
||||
}, |
||||
async getPipEnv () { |
||||
let ret = await shell.exec(['pip config list'], { type: 'cmd' }) |
||||
if (ret != null) { |
||||
ret = ret.trim() |
||||
const lines = ret.split('\n') |
||||
const vars = {} |
||||
for (const line of lines) { |
||||
if (!line.startsWith('global')) { |
||||
continue |
||||
} |
||||
const key = line.substring(0, line.indexOf('=')) |
||||
let value = line.substring(line.indexOf('=') + 1) |
||||
if (value.startsWith('\'')) { |
||||
value = value.startsWith(1, value.length - 1) |
||||
} |
||||
vars[key] = value |
||||
} |
||||
return vars |
||||
} |
||||
return {} |
||||
}, |
||||
|
||||
async setPipEnv (list) { |
||||
const cmds = [] |
||||
for (const item of list) { |
||||
if (item.value != null) { |
||||
cmds.push(`pip config set global.${item.key} ${item.value}`) |
||||
} else { |
||||
cmds.push(`pip config unset global.${item.key}`) |
||||
} |
||||
} |
||||
const ret = await shell.exec(cmds, { type: 'cmd' }) |
||||
return ret |
||||
}, |
||||
|
||||
async unsetPipEnv (list) { |
||||
const cmds = [] |
||||
for (const item of list) { |
||||
cmds.push(`pip config unset global.${item} `) |
||||
} |
||||
const ret = await shell.exec(cmds, { type: 'cmd' }) |
||||
return ret |
||||
}, |
||||
|
||||
async setRegistry ({ registry }) { |
||||
await api.setPipEnv([{ key: 'index-url', value: registry }]) |
||||
return true |
||||
}, |
||||
|
||||
async setTrustedHost (host) { |
||||
await api.setPipEnv([{ key: 'trusted-host', value: host }]) |
||||
return true |
||||
}, |
||||
|
||||
async setProxy (ip, port) { |
||||
|
||||
}, |
||||
|
||||
async unsetProxy () { |
||||
|
||||
} |
||||
} |
||||
return api |
||||
} |
||||
|
||||
module.exports = { |
||||
key: 'pip', |
||||
config: pipConfig, |
||||
status: { |
||||
enabled: false |
||||
}, |
||||
plugin: PipPlugin |
||||
} |
@ -0,0 +1,98 @@
|
||||
<template> |
||||
<ds-container> |
||||
<template slot="header"> |
||||
PIP加速 |
||||
<span style="color:#999;"> |
||||
</span> |
||||
</template> |
||||
|
||||
<div v-if="config"> |
||||
<a-form layout="horizontal"> |
||||
<!-- <a-form-item label="启用PIP加速" :label-col="labelCol" :wrapper-col="wrapperCol">--> |
||||
<!-- <a-checkbox v-model="config.plugin.pip.enabled">--> |
||||
<!-- 随应用启动--> |
||||
<!-- </a-checkbox>--> |
||||
<!-- <a-tag v-if="status.plugin.pip.enabled" color="green">--> |
||||
<!-- 当前已启动--> |
||||
<!-- </a-tag>--> |
||||
<!-- <a-tag v-else color="red">--> |
||||
<!-- 当前未启动--> |
||||
<!-- </a-tag>--> |
||||
<!-- </a-form-item>--> |
||||
<a-form-item label="设置环境变量" :label-col="labelCol" :wrapper-col="wrapperCol"> |
||||
<a-checkbox v-model="config.proxy.setEnv" > |
||||
开启系统代理时是否同时修改HTTPS_PROXY环境变量 |
||||
</a-checkbox> |
||||
<div class="form-help">开启ds使用pip命令行时需要勾选此选项,否则会报 wrong version number 异常</div> |
||||
<div class="form-help">注意:当前已打开的命令行在开关系统代理后并不会实时生效,需要重新打开一个新的命令行窗口</div> |
||||
</a-form-item> |
||||
<a-form-item label="信任仓库域名" :label-col="labelCol" :wrapper-col="wrapperCol"> |
||||
<a-input v-model="config.plugin.pip.setting.trustedHost"></a-input> |
||||
<div>这里配置信任仓库域名,避免出现ssl校验失败错误</div> |
||||
</a-form-item> |
||||
<a-form-item label="仓库镜像" :label-col="labelCol" :wrapper-col="wrapperCol"> |
||||
<a-radio-group v-model="config.plugin.pip.setting.registry" @change="onSwitchRegistry" |
||||
default-value="https://pypi.org/simple/" button-style="solid"> |
||||
<a-radio-button value="https://pypi.org/simple/"> |
||||
原生 |
||||
</a-radio-button> |
||||
<a-radio-button value="http://mirrors.aliyun.com/pypi/simple/"> |
||||
taobao镜像 |
||||
</a-radio-button> |
||||
</a-radio-group> |
||||
<div class="form-help">设置后立即生效,即使关闭ds也会继续保持</div> |
||||
</a-form-item> |
||||
</a-form> |
||||
</div> |
||||
<template slot="footer"> |
||||
<div class="footer-bar"> |
||||
<a-button class="md-mr-10" icon="sync" @click="resetDefault()">恢复默认</a-button> |
||||
<a-button :loading="applyLoading" icon="check" type="primary" @click="apply()">应用</a-button> |
||||
</div> |
||||
</template> |
||||
</ds-container> |
||||
|
||||
</template> |
||||
|
||||
<script> |
||||
import Plugin from '../../mixins/plugin' |
||||
|
||||
export default { |
||||
name: 'pip', |
||||
mixins: [Plugin], |
||||
data () { |
||||
return { |
||||
key: 'plugin.pip', |
||||
npmVariables: undefined, |
||||
registry: false, |
||||
trustedHostList: [] |
||||
} |
||||
}, |
||||
created () { |
||||
console.log('status:', this.status) |
||||
}, |
||||
mounted () { |
||||
}, |
||||
methods: { |
||||
ready () { |
||||
}, |
||||
async applyBefore () { |
||||
}, |
||||
async applyAfter () { |
||||
await this.$api.plugin.pip.start() |
||||
await this.$api.proxy.restart() |
||||
}, |
||||
async onSwitchRegistry (event) { |
||||
await this.setRegistry({ registry: event.target.value }) |
||||
this.$message.success('切换成功') |
||||
}, |
||||
async setRegistry ({ registry }) { |
||||
await this.apply() |
||||
await this.$api.plugin.node.setRegistry({ registry }) |
||||
} |
||||
|
||||
} |
||||
} |
||||
</script> |
||||
<style lang="sass"> |
||||
</style> |
Loading…
Reference in new issue