#!/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"
