Initial commit
This commit is contained in:
12
.claude-plugin/plugin.json
Normal file
12
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "biome-format",
|
||||
"description": "biomeによるファイル保存時の自動コードフォーマット",
|
||||
"version": "0.0.0-2025.11.28",
|
||||
"author": {
|
||||
"name": "TOYOTA, Yoichi",
|
||||
"email": "y.toyota@xtone.co.jp"
|
||||
},
|
||||
"hooks": [
|
||||
"./hooks"
|
||||
]
|
||||
}
|
||||
68
hooks/biome_format.sh
Executable file
68
hooks/biome_format.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 対象ファイル拡張子のリスト
|
||||
TARGET_EXTENSIONS=("ts" "tsx" "js" "jsx")
|
||||
|
||||
# 標準入力からJSONデータを読み取り
|
||||
input_data=$(cat)
|
||||
|
||||
# ファイルパスを取得
|
||||
file_path=$(echo "$input_data" | jq -r '.tool_input.file_path')
|
||||
|
||||
# 対象ファイル拡張子かチェック
|
||||
is_target_file=false
|
||||
for ext in "${TARGET_EXTENSIONS[@]}"; do
|
||||
if [[ "$file_path" == *".$ext" ]]; then
|
||||
is_target_file=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$is_target_file" = false ]; then
|
||||
echo "Not a target file extension: $file_path"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ファイルパスを絶対パスに変換
|
||||
if [[ "$file_path" != /* ]]; then
|
||||
file_path="$(pwd)/$file_path"
|
||||
fi
|
||||
|
||||
# ファイルが存在するかチェック
|
||||
if [ ! -f "$file_path" ]; then
|
||||
echo "File not found: $file_path"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ファイルのディレクトリから上位ディレクトリへ遡ってbiome.jsonを探す
|
||||
find_biome_config() {
|
||||
local current_dir="$1"
|
||||
|
||||
while [ "$current_dir" != "/" ]; do
|
||||
if [ -f "$current_dir/biome.json" ]; then
|
||||
echo "$current_dir"
|
||||
return 0
|
||||
fi
|
||||
current_dir=$(dirname "$current_dir")
|
||||
done
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
# ファイルのディレクトリを取得
|
||||
file_dir=$(dirname "$file_path")
|
||||
|
||||
# biome.jsonを探す
|
||||
config_dir=$(find_biome_config "$file_dir")
|
||||
|
||||
if [ -z "$config_dir" ]; then
|
||||
echo "biome.json not found, using default configuration"
|
||||
echo "Formatting $file_path with Biome (default config)"
|
||||
# デフォルト設定でbiome formatを実行
|
||||
npx @biomejs/biome format --write "$file_path"
|
||||
else
|
||||
echo "Found biome.json in: $config_dir"
|
||||
echo "Formatting $file_path with Biome"
|
||||
# biome.jsonがあるディレクトリに移動してから実行
|
||||
(cd "$config_dir" && npx @biomejs/biome format --write "$file_path")
|
||||
fi
|
||||
15
hooks/hooks.json
Normal file
15
hooks/hooks.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"hooks": {
|
||||
"PostToolUse": [
|
||||
{
|
||||
"matcher": "Write|Edit|MultiEdit",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/biome_format.sh"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
49
plugin.lock.json
Normal file
49
plugin.lock.json
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||
"pluginId": "gh:xtone/ai_development_tools:claude_code_hooks/biome_format",
|
||||
"normalized": {
|
||||
"repo": null,
|
||||
"ref": "refs/tags/v20251128.0",
|
||||
"commit": "4cbe85cb9e152f03a896f5cdfb0b748ee8d168e2",
|
||||
"treeHash": "f19c8a1fb91e38af3dc6a5579e902e29f7105f6ce681e373539d52d17aee5496",
|
||||
"generatedAt": "2025-11-28T10:29:07.339210Z",
|
||||
"toolVersion": "publish_plugins.py@0.2.0"
|
||||
},
|
||||
"origin": {
|
||||
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||
"branch": "master",
|
||||
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||
},
|
||||
"manifest": {
|
||||
"name": "biome-format",
|
||||
"description": "biomeによるファイル保存時の自動コードフォーマット",
|
||||
"version": null
|
||||
},
|
||||
"content": {
|
||||
"files": [
|
||||
{
|
||||
"path": "README.md",
|
||||
"sha256": "f7d87a7bda9a466ad1fdcd85e8957a513bf9baa20e5b9268783996116af22b04"
|
||||
},
|
||||
{
|
||||
"path": "hooks/biome_format.sh",
|
||||
"sha256": "9c8d373d17c3232014ea5e480bd26e602aa4852f4096cf19ad19e974b0f41604"
|
||||
},
|
||||
{
|
||||
"path": "hooks/hooks.json",
|
||||
"sha256": "9c93110a9a473adf1124300abc5e8ab32962c1d5f6e5abb5d6500d7a9d1af62a"
|
||||
},
|
||||
{
|
||||
"path": ".claude-plugin/plugin.json",
|
||||
"sha256": "128bf1b25624ff17a13193d378e3258952b1720cecbfb58df1a3f07f4d0d0998"
|
||||
}
|
||||
],
|
||||
"dirSha256": "f19c8a1fb91e38af3dc6a5579e902e29f7105f6ce681e373539d52d17aee5496"
|
||||
},
|
||||
"security": {
|
||||
"scannedAt": null,
|
||||
"scannerVersion": null,
|
||||
"flags": []
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user