#!/usr/bin/env sh # slugify.sh — 把分支類型與描述轉成 ASCII 分支名 slug。 # 用法: slugify.sh {type} {phrase} # 規則: 全部轉小寫,非 a-z0-9 的字元換成連字號, # 連續連字號合併成一個,並去除開頭與結尾的連字號。 # 輸出: {type}/{slug}(例如: slugify.sh feat "export report" → feat/export-report) set -u if [ "$#" -lt 2 ]; then echo "用法: slugify.sh {type} {phrase}" >&2 exit 1 fi TYPE="$1" shift PHRASE="$*" slug=$(printf '%s' "$PHRASE" | tr '[:upper:]' '[:lower:]' | sed -e 's/[^a-z0-9]/-/g' -e 's/-\{2,\}/-/g' -e 's/^-//' -e 's/-$//') printf '%s/%s\n' "$TYPE" "$slug"