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