spec-runner 1.0.12 → 1.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-runner",
3
- "version": "1.0.12",
3
+ "version": "1.0.14",
4
4
  "description": "フェーズ駆動で設計先行を強制。npx で .spec-runner を展開し、次のステップ .md に従って進める",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -19,7 +19,10 @@ ARGS=()
19
19
  for a in "$@"; do
20
20
  case "$a" in
21
21
  --yes|-y) YES_MODE=true ;;
22
- *) ARGS+=("$a") ;;
22
+ *)
23
+ # 空引数は無視(例: "" "task-management" "カテゴリ")
24
+ [[ -n "$a" ]] && ARGS+=("$a")
25
+ ;;
23
26
  esac
24
27
  done
25
28
 
@@ -105,7 +108,8 @@ DOC_TITLE=$(echo "$DOC_TITLE" | sed 's/[\\\\\\/\\:\\*\\?\\\"\\<\\>\\|]/ /g' | se
105
108
 
106
109
  # カテゴリ(省略時はデフォルト)。日本語カテゴリは許可し、危険文字だけ除去。
107
110
  CATEGORY="${CATEGORY:-ユースケース}"
108
- CATEGORY=$(echo "$CATEGORY" | sed 's/[^a-zA-Z0-9_ーぁ-んァ-ン一-龥\-]//g')
111
+ # 文字レンジ指定は sed 実装差で壊れやすいため、危険文字のみを除去する。
112
+ CATEGORY=$(echo "$CATEGORY" | sed 's/[\\\/:\*\?"<>|]//g' | sed 's/[[:cntrl:]]//g' | sed 's/[[:space:]]\+/ /g' | sed 's/^ *//; s/ *$//')
109
113
  [[ -z "$CATEGORY" ]] && CATEGORY="ユースケース"
110
114
 
111
115
  if git rev-parse --verify "$BRANCH_NAME" >/dev/null 2>&1; then
@@ -114,14 +118,25 @@ if git rev-parse --verify "$BRANCH_NAME" >/dev/null 2>&1; then
114
118
  fi
115
119
 
116
120
  CURRENT=$(git branch --show-current 2>/dev/null || echo "")
117
- MAIN_BRANCH="main"
118
- if ! git rev-parse --verify "$MAIN_BRANCH" >/dev/null 2>&1; then
119
- MAIN_BRANCH="master"
120
- if ! git rev-parse --verify "$MAIN_BRANCH" >/dev/null 2>&1; then
121
- echo "Error: main master も存在しません。" >&2
122
- exit 1
121
+ MAIN_BRANCH=""
122
+
123
+ # 1) origin/HEAD からデフォルトブランチを取得
124
+ if git symbolic-ref -q --short refs/remotes/origin/HEAD >/dev/null 2>&1; then
125
+ MAIN_BRANCH="$(git symbolic-ref -q --short refs/remotes/origin/HEAD | sed 's#^origin/##')"
126
+ fi
127
+ # 2) main / master をフォールバック
128
+ if [[ -z "$MAIN_BRANCH" ]]; then
129
+ if git rev-parse --verify "main" >/dev/null 2>&1; then
130
+ MAIN_BRANCH="main"
131
+ elif git rev-parse --verify "master" >/dev/null 2>&1; then
132
+ MAIN_BRANCH="master"
123
133
  fi
124
134
  fi
135
+ # 3) どれも無ければ現在ブランチ(初期ブランチ名が trunk/develop 等のケース)
136
+ if [[ -z "$MAIN_BRANCH" ]]; then
137
+ MAIN_BRANCH="${CURRENT:-}"
138
+ fi
139
+ [[ -n "$MAIN_BRANCH" ]] || { echo "Error: ベースブランチを特定できません(main/master/current が見つかりません)。" >&2; exit 1; }
125
140
 
126
141
  if [[ "$YES_MODE" != true ]]; then
127
142
  echo "次の UC を開始する準備をします。"