gitea_compliance_init
Initialize a Gitea compliance configuration file with default rules to enforce repository standards and automate policy checks.
Instructions
Initialize compliance configuration file (.gitea/compliance.yaml) with default rules.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force overwrite existing configuration (default: false) | |
| config_path | No | Custom path for config file |
Implementation Reference
- src/tools/compliance.ts:567-634 (handler)Core handler function for 'gitea_compliance_init' tool. Creates .gitea/compliance.yaml with default branch naming, commit types, and PR format rules if not exists or force=true.export async function initConfig(params: InitConfigParams): Promise<{ success: boolean; path: string; message: string }> { const configPath = params.config_path || path.join(process.cwd(), '.gitea', 'compliance.yaml'); const configDir = path.dirname(configPath); // 检查文件是否存在 if (fs.existsSync(configPath) && !params.force) { return { success: false, path: configPath, message: `配置文件已存在: ${configPath},使用 --force 覆盖`, }; } // 创建目录 if (!fs.existsSync(configDir)) { fs.mkdirSync(configDir, { recursive: true }); } // 生成配置内容 const configContent = `# Gitea 规范检查配置 # 用于检查分支、提交、PR 是否符合项目规范 # 分支命名规范 branch: patterns: - "^feat/issue-\\\\d+-.*$" # 功能分支: feat/issue-123-add-feature - "^fix/issue-\\\\d+-.*$" # 修复分支: fix/issue-456-fix-bug - "^docs/.*$" # 文档分支: docs/update-readme - "^refactor/.*$" # 重构分支: refactor/improve-performance - "^test/.*$" # 测试分支: test/add-unit-tests - "^chore/.*$" # 杂务分支: chore/update-deps - "^main$" # 主分支 - "^dev$" # 开发分支 - "^release/.*$" # 发布分支: release/v1.0.0 # 提交信息规范 (Conventional Commits) commit: types: - feat # 新功能 - fix # 修复 - docs # 文档 - refactor # 重构 - test # 测试 - chore # 杂务 - style # 格式 - perf # 性能 - ci # CI/CD - build # 构建 - revert # 回滚 scope_required: false # 是否要求 scope max_subject_length: 72 # 主题行最大长度 # PR 格式规范 pr: required_sections: - Summary # 摘要 - Test Plan # 测试计划 require_issue_link: true # 是否要求关联 Issue `; fs.writeFileSync(configPath, configContent, 'utf-8'); return { success: true, path: configPath, message: `配置文件已创建: ${configPath}`, }; }
- Input schema definition for the tool registration, matching the InitConfigParams interface.'gitea_compliance_init', { title: '初始化规范检查配置', description: 'Initialize compliance configuration file (.gitea/compliance.yaml) with default rules.', inputSchema: z.object({ force: z.boolean().optional().describe('Force overwrite existing configuration (default: false)'), config_path: z.string().optional().describe('Custom path for config file'), }), }, async (args) => { try { const result = await ComplianceTools.initConfig(args as any); return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : String(error); return { content: [{ type: 'text' as const, text: `Error: ${errorMessage}` }], isError: true }; } } );
- src/tools-registry/compliance-registry.ts:118-136 (registration)MCP tool registration for 'gitea_compliance_init', including schema and thin wrapper handler delegating to ComplianceTools.initConfig.'gitea_compliance_init', { title: '初始化规范检查配置', description: 'Initialize compliance configuration file (.gitea/compliance.yaml) with default rules.', inputSchema: z.object({ force: z.boolean().optional().describe('Force overwrite existing configuration (default: false)'), config_path: z.string().optional().describe('Custom path for config file'), }), }, async (args) => { try { const result = await ComplianceTools.initConfig(args as any); return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : String(error); return { content: [{ type: 'text' as const, text: `Error: ${errorMessage}` }], isError: true }; } } );
- src/tools/compliance.ts:559-562 (schema)TypeScript interface defining input parameters for initConfig, matching the tool's inputSchema.export interface InitConfigParams { force?: boolean; config_path?: string; }