18 lines
661 B
Bash
18 lines
661 B
Bash
#!/usr/bin/env bash
|
|
# =============================================================================
|
|
# skills/ingest/scripts/slug.sh
|
|
# Derive a wiki slug from a path, filename, or title string.
|
|
# slug.sh "raw/articles/My Source.md" -> my-source
|
|
# slug.sh "Some Concept Name" -> some-concept-name
|
|
# =============================================================================
|
|
set -euo pipefail
|
|
|
|
input="${1:?usage: slug.sh <path-or-title>}"
|
|
|
|
# Strip directory and extension when given a path
|
|
base="${input##*/}"
|
|
base="${base%.*}"
|
|
|
|
printf '%s\n' "$base" \
|
|
| tr '[:upper:]' '[:lower:]' \
|
|
| sed -E 's/[^a-z0-9]+/-/g; s/-{2,}/-/g; s/^-+//; s/-+$//'
|