技能以前只寫成功路徑。腳本回非 0 時,模型得自己猜下一步,猜錯就是靜靜 往下走。現在每一支腳本在檔頭宣告自己的結束碼,技能也逐碼寫明要停、要 問、還是要改參數再呼叫一次。兩支技能補上連線變數的解析步驟,讓缺值在 第一步就浮出來,而不是在中途撞出一行英文錯誤。 流程也拉平了。取內容、選範本、問輸出位置這幾件事彼此不相依,改成同一批 送出;存取庫批次同步從逐一處理改成各存取庫同時進行,一個 owner 底下有 上百個存取庫時差距最明顯。 相依的技能組下限寫進外掛設定,版本推進。
36 lines
859 B
Bash
Executable File
36 lines
859 B
Bash
Executable File
#!/usr/bin/env sh
|
|
# hash-id — 產生 8 碼大寫 SHA-1 hash。
|
|
# 用法:
|
|
# hash-id <text>
|
|
# printf '%s' <text> | hash-id
|
|
# 規則:
|
|
# 先取 SHA-1 前 8 碼大寫。
|
|
# 若首碼為 0-9、A、B、C,改成 H 加上原 SHA-1 前 7 碼。
|
|
# 結束碼: 0=成功 1=這台機器沒有 sha1sum 也沒有 shasum,算不出雜湊
|
|
set -eu
|
|
|
|
input=''
|
|
if [ "$#" -gt 0 ]; then
|
|
input=$*
|
|
elif [ -t 0 ]; then
|
|
input=''
|
|
else
|
|
input=$(cat)
|
|
fi
|
|
|
|
if command -v sha1sum >/dev/null 2>&1; then
|
|
raw=$(printf '%s' "$input" | sha1sum | awk '{print $1}')
|
|
elif command -v shasum >/dev/null 2>&1; then
|
|
raw=$(printf '%s' "$input" | shasum -a 1 | awk '{print $1}')
|
|
else
|
|
echo 'no SHA-1 helper found' >&2
|
|
exit 1
|
|
fi
|
|
|
|
hash=$(printf '%s' "$raw" | cut -c1-8 | tr a-f A-F)
|
|
case "$hash" in
|
|
[0-9ABC]*) hash="H$(printf '%s' "$hash" | cut -c1-7)" ;;
|
|
esac
|
|
|
|
printf '%s\n' "$hash"
|