新建订阅支持粘贴导入

This commit is contained in:
whyour 2022-05-25 01:09:05 +08:00
parent 76b6677f5a
commit 05cf51afa0
10 changed files with 86 additions and 12 deletions

View File

@ -117,7 +117,7 @@ ql extra
# 添加单个脚本文件
ql raw <file_url>
# 添加单个仓库的指定脚本
ql repo <repo_url> <whitelist> <blacklist> <dependence> <branch>
ql repo <repo_url> <whitelist> <blacklist> <dependence> <branch> <extensions>
# 删除旧日志
ql rmlog <days>
# 启动tg-bot
@ -147,6 +147,7 @@ task <file_path> desi <env_name> <account_number>
* blacklist: 拉取仓库时的黑名单,即就是需要拉取的脚本的路径不包含的字符串
* dependence: 拉取仓库需要的依赖文件会直接从仓库拷贝到scripts下的仓库目录不受黑名单影响
* branch: 拉取仓库的分支
* extensions: 拉取仓库的文件后缀
* days: 需要保留的日志的天数
* file_path: 任务执行时的文件路径
* env_name: 任务执行时需要并发或者指定时的环境变量名称

View File

@ -229,15 +229,15 @@ run_extra_shell() {
## 脚本用法
usage() {
echo -e "本脚本用法:"
echo -e "1. $cmd_update update # 更新并重启青龙"
echo -e "2. $cmd_update extra # 运行自定义脚本"
echo -e "3. $cmd_update raw <fileurl> # 更新单个脚本文件"
echo -e "4. $cmd_update repo <repourl> <path> <blacklist> <dependence> <branch> # 更新单个仓库的脚本"
echo -e "5. $cmd_update rmlog <days> # 删除旧日志"
echo -e "6. $cmd_update bot # 启动tg-bot"
echo -e "7. $cmd_update check # 检测青龙环境并修复"
echo -e "8. $cmd_update resetlet # 重置登录错误次数"
echo -e "9. $cmd_update resettfa # 禁用两步登录"
echo -e "1. $cmd_update update # 更新并重启青龙"
echo -e "2. $cmd_update extra # 运行自定义脚本"
echo -e "3. $cmd_update raw <fileurl> # 更新单个脚本文件"
echo -e "4. $cmd_update repo <repourl> <path> <blacklist> <dependence> <branch> <extensions> # 更新单个仓库的脚本"
echo -e "5. $cmd_update rmlog <days> # 删除旧日志"
echo -e "6. $cmd_update bot # 启动tg-bot"
echo -e "7. $cmd_update check # 检测青龙环境并修复"
echo -e "8. $cmd_update resetlet # 重置登录错误次数"
echo -e "9. $cmd_update resettfa # 禁用两步登录"
}
## 更新qinglong

View File

@ -50,6 +50,7 @@ const CronModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()
@ -168,6 +169,7 @@ const CronLabelModal = ({
visible={visible}
footer={buttons}
centered
maskClosable={false}
forceRender
onCancel={() => handleCancel(false)}
confirmLoading={loading}

View File

@ -72,6 +72,7 @@ const DependenceModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()

View File

@ -42,6 +42,7 @@ const EditNameModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()

View File

@ -62,6 +62,7 @@ const EnvModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()

View File

@ -57,6 +57,7 @@ const EditScriptNameModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()

View File

@ -44,6 +44,7 @@ const SaveModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()

View File

@ -44,6 +44,7 @@ const AppModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()

View File

@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react';
import React, { useCallback, useEffect, useState } from 'react';
import { Modal, message, InputNumber, Form, Radio, Select, Input } from 'antd';
import { request } from '@/utils/http';
import config from '@/utils/config';
@ -183,6 +183,44 @@ const SubscriptionModal = ({
);
};
const onPaste = useCallback((e: any) => {
const text = e.clipboardData.getData('text');
if (!subscription && text.includes('ql ')) {
const [
,
type,
url,
whitelist,
blacklist,
dependences,
branch,
extensions,
] = text.split(' ').map((x) => x.trim());
form.setFieldsValue({
type:
type === 'raw'
? 'file'
: url.startsWith('http')
? 'public-repo'
: 'private-repo',
url,
whitelist,
blacklist,
dependences,
branch,
extensions,
});
}
}, []);
useEffect(() => {
if (visible) {
window.addEventListener('paste', onPaste);
} else {
window.removeEventListener('paste', onPaste);
}
}, [visible]);
useEffect(() => {
form.setFieldsValue(subscription || {});
setType((subscription && subscription.type) || 'public-repo');
@ -193,12 +231,39 @@ const SubscriptionModal = ({
}
}, [subscription, visible]);
const isFirefox = navigator.userAgent.includes('Firefox');
const isSafari =
navigator.userAgent.includes('Safari') &&
!navigator.userAgent.includes('Chrome');
const isQQBrowser = navigator.userAgent.includes('QQBrowser');
return (
<Modal
title={subscription ? '编辑订阅' : '新建订阅'}
title={
subscription ? (
'编辑订阅'
) : (
<span>
<small
style={{
color: '#999',
fontWeight: 400,
fontSize: isFirefox ? 9 : 12,
marginLeft: 2,
zoom: isSafari ? 0.66 : 0.8,
letterSpacing: isQQBrowser ? -2 : 0,
}}
>
repo/raw命令
</small>
</span>
)
}
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()