1a1254f045
CI - 构建、测试和质量检查 / Rust 代码检查 (push) Has been cancelled
CI - 构建、测试和质量检查 / 单元测试 (push) Has been cancelled
CI - 构建、测试和质量检查 / 代码格式检查 (push) Has been cancelled
CI - 构建、测试和质量检查 / Clippy 代码质量检查 (push) Has been cancelled
CI - 构建、测试和质量检查 / 构建可执行文件 (claude_code_rs, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
CI - 构建、测试和质量检查 / 构建可执行文件 (claude_code_rs, ubuntu-latest, x86_64-unknown-linux-gnu) (push) Has been cancelled
CI - 构建、测试和质量检查 / 构建可执行文件 (claude_code_rs.exe, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
- 添加 Rust GUI 桌面应用程序入口点 - 添加 TypeScript/JavaScript 项目基础结构文件 - 包含组件、工具、命令、服务和工具定义 - 添加配置文件如 .gitignore、.gitattributes 和 LICENSE - 包含图片资源和演示文件 - 为各种功能模块添加占位符和类型定义
67 lines
1.7 KiB
Python
67 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
"""PostToolUse hook executor for hookify plugin.
|
|
|
|
This script is called by Claude Code after a tool executes.
|
|
It reads .claude/hookify.*.local.md files and evaluates rules.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import json
|
|
|
|
# CRITICAL: Add plugin root to Python path for imports
|
|
PLUGIN_ROOT = os.environ.get('CLAUDE_PLUGIN_ROOT')
|
|
if PLUGIN_ROOT:
|
|
parent_dir = os.path.dirname(PLUGIN_ROOT)
|
|
if parent_dir not in sys.path:
|
|
sys.path.insert(0, parent_dir)
|
|
if PLUGIN_ROOT not in sys.path:
|
|
sys.path.insert(0, PLUGIN_ROOT)
|
|
|
|
try:
|
|
from hookify.core.config_loader import load_rules
|
|
from hookify.core.rule_engine import RuleEngine
|
|
except ImportError as e:
|
|
error_msg = {"systemMessage": f"Hookify import error: {e}"}
|
|
print(json.dumps(error_msg), file=sys.stdout)
|
|
sys.exit(0)
|
|
|
|
|
|
def main():
|
|
"""Main entry point for PostToolUse hook."""
|
|
try:
|
|
# Read input from stdin
|
|
input_data = json.load(sys.stdin)
|
|
|
|
# Determine event type based on tool
|
|
tool_name = input_data.get('tool_name', '')
|
|
event = None
|
|
if tool_name == 'Bash':
|
|
event = 'bash'
|
|
elif tool_name in ['Edit', 'Write', 'MultiEdit']:
|
|
event = 'file'
|
|
|
|
# Load rules
|
|
rules = load_rules(event=event)
|
|
|
|
# Evaluate rules
|
|
engine = RuleEngine()
|
|
result = engine.evaluate_rules(rules, input_data)
|
|
|
|
# Always output JSON (even if empty)
|
|
print(json.dumps(result), file=sys.stdout)
|
|
|
|
except Exception as e:
|
|
error_output = {
|
|
"systemMessage": f"Hookify error: {str(e)}"
|
|
}
|
|
print(json.dumps(error_output), file=sys.stdout)
|
|
|
|
finally:
|
|
# ALWAYS exit 0
|
|
sys.exit(0)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|