Files
RuoYi-Vue3-FastAPI/ruoyi-fastapi-backend/cli/groups/plugin/options.py
T
insistence 2a055ba648 feat: 新增插件系统 (#112)
* feat: 初始化插件系统

* refactor: 收口插件系统运行时重构

* perf: 优化插件系统类型提示

* fix&perf: 修复和优化插件系统

* fix: 修复gitignore规则误忽略插件文件的问题

* fix: 修复运行时插件根路径算错的问题

* fix: 加强插件发现和路由注册的防护措施

* revert: 回滚定时任务白名单

* fix: 移除未使用的应用路由注册探测

* revert: 恢复部分代码

* perf: 优化插件系统

* docs: 新增插件开发文档

* perf: 优化插件管理模块

* perf: 提升插件系统核心能力

* refactor: 重构生命周期 step runner

* fix: 修复lint错误

* test: 清理测试用例

* test: 调整测试目录名称

* fix: 修复前后端目录硬编码的问题

* fix: 修复插件系统安全性缺口

* refactor: 重新设计插件生命周期 Migration 事务与回滚

* perf: 优化插件系统边界问题

* refactor: 重构当前插件系统的依赖体系设计

* perf: 优化代码

* perf: 优化代码

* fix: 修复代码合并问题

* fix: 修复bug

* perf: 优化代码

* perf&fix: 优化代码和修复bug

* docs: 优化文档格式

* feat: 适配Vue2版本

* docs: 更新README文档

* fix: 修复ruff lint错误

* chore: 更新后端依赖文件
2026-07-28 20:35:18 +08:00

89 lines
2.5 KiB
Python

from dataclasses import dataclass
from typing import Literal
@dataclass(frozen=True)
class PluginCreateCommandOptions:
"""
插件创建命令选项。
:param backend_only: 是否只创建后端插件模板
:param frontend_only: 是否只创建前端插件模板
:param template: 插件模板名称
:param frontend_version: 前端 Vue 版本,支持 auto、vue2、vue3
:param no_migration: 是否不创建 migration 示例
:param no_seed: 是否不创建 seed 示例
:param no_job: 是否不创建定时任务示例
:param no_config: 是否不创建配置项示例
:param no_test: 是否不创建测试样例
:param dry_run: 是否仅预演
"""
backend_only: bool = False
frontend_only: bool = False
template: str = 'full-stack'
frontend_version: Literal['auto', 'vue2', 'vue3'] = 'auto'
no_migration: bool = False
no_seed: bool = False
no_job: bool = False
no_config: bool = False
no_test: bool = False
dry_run: bool = False
@dataclass(frozen=True)
class PluginDependencyInstallCommandOptions:
"""
插件依赖安装命令选项。
:param allow_prod: 是否允许生产环境危险命令
:param yes: 是否跳过确认
:param dry_run: 是否仅预演
:param policy_mode: 临时覆盖策略模式
:param allow_unlisted: dev 环境是否允许未命中 allowlist 的依赖仅告警
:param lockfile: 锁文件路径
:param offline_dir: 离线制品目录
:param require_lockfile: 是否要求锁文件
"""
allow_prod: bool = False
yes: bool = False
dry_run: bool = False
policy_mode: str | None = None
allow_unlisted: bool = False
lockfile: str = ''
offline_dir: str = ''
require_lockfile: bool | None = None
@dataclass(frozen=True)
class PluginDependencyLockCommandOptions:
"""
插件依赖锁文件模板命令选项。
:param output_path: 输出锁文件路径
:param offline_dir: 离线制品目录
:param dry_run: 是否仅预演
:param overwrite: 是否覆盖已有锁文件
"""
output_path: str = ''
offline_dir: str = ''
dry_run: bool = False
overwrite: bool = False
@dataclass(frozen=True)
class PluginDependencyAllowlistExampleCommandOptions:
"""
插件依赖允许列表示例命令选项。
:param output_path: 输出允许列表路径
:param dry_run: 是否仅预演
:param overwrite: 是否覆盖已有文件
"""
output_path: str = ''
dry_run: bool = False
overwrite: bool = False