2024-11-12 13:16:23 +08:00

77 lines
2.8 KiB
TypeScript

import { WorkflowNode } from "@/domain/workflow";
import { memo } from "react";
import DeployToAliyunOSS from "./DeployToAliyunOss";
import DeployToAliyunALB from "./DeployToAliyunALB";
import DeployToAliyunCDN from "./DeployToAliyunCDN";
import DeployToAliyunCLB from "./DeployToAliyunCLB";
import DeployToAliyunNLB from "./DeployToAliyunNLB";
import DeployToBaiduCloudCDN from "./DeployToBaiduCloudCDN";
import DeployToDogeCloudCDN from "./DeployToDogeCloudCDN";
import DeployToHuaweiCloudCDN from "./DeployToHuaweiCloudCDN";
import DeployToHuaweiCloudELB from "./DeployToHuaweiCloudELB";
import DeployToKubernetesSecret from "./DeployToKubernetesSecret";
import DeployToQiniuCDN from "./DeployToQiniuCDN";
import DeployToWebhook from "./DeployToWebhook";
import DeployToTencentCDN from "./DeployToTencentCDN";
import DeployToTencentCLB from "./DeployToTencentCLB";
import DeployToTencentCOS from "./DeployToTencentCOS";
import DeployToTencentTEO from "./DeployToTencentTEO";
import DeployToSSH from "./DeployToSSH";
import DeployToLocal from "./DeployToLocal";
export type DeployFormProps = {
data: WorkflowNode;
defaultProivder?: string;
};
const DeployForm = ({ data, defaultProivder }: DeployFormProps) => {
return <div className="dark:text-stone-200">{getForm(data, defaultProivder)}</div>;
};
export default memo(DeployForm);
const getForm = (data: WorkflowNode, defaultProivder?: string) => {
const provider = defaultProivder || data.config?.providerType;
switch (provider) {
case "aliyun-oss":
return <DeployToAliyunOSS data={data} />;
case "aliyun-alb":
return <DeployToAliyunALB data={data} />;
case "aliyun-cdn":
case "aliyun-dcdn":
return <DeployToAliyunCDN data={data} />;
case "aliyun-clb":
return <DeployToAliyunCLB data={data} />;
case "aliyun-nlb":
return <DeployToAliyunNLB data={data} />;
case "baiducloud-cdn":
return <DeployToBaiduCloudCDN data={data} />;
case "dogecloud-cdn":
return <DeployToDogeCloudCDN data={data} />;
case "huaweicloud-cdn":
return <DeployToHuaweiCloudCDN data={data} />;
case "huaweicloud-elb":
return <DeployToHuaweiCloudELB data={data} />;
case "k8s-secret":
return <DeployToKubernetesSecret data={data} />;
case "qiniu-cdn":
return <DeployToQiniuCDN data={data} />;
case "webhook":
return <DeployToWebhook data={data} />;
case "tencent-cdn":
case "tencent-ecdn":
return <DeployToTencentCDN data={data} />;
case "tencent-clb":
return <DeployToTencentCLB data={data} />;
case "tencent-cos":
return <DeployToTencentCOS data={data} />;
case "tencent-teo":
return <DeployToTencentTEO data={data} />;
case "ssh":
return <DeployToSSH data={data} />;
case "local":
return <DeployToLocal data={data} />;
default:
return <></>;
}
};