DO NOT CREATE NEW ISSUES OR PULL REQUESTS HERE All packages are moving to: https://github.com/swaits-typst-packages Existing issues and PRs are being migrated. This is a temporary lockdown while migration is completed.
70 lines
1.8 KiB
Bash
Executable File
70 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SRC_REPO_ROOT="$(pwd)"
|
|
DEST_PARENT="../swaits-typst-collection" # change if you like
|
|
|
|
DIRS=(
|
|
codly-languages
|
|
)
|
|
|
|
command -v git-filter-repo >/dev/null || {
|
|
echo "git-filter-repo is required. Install via 'uv tool install git-filter-repo' (or pipx/pip)."
|
|
exit 1
|
|
}
|
|
|
|
mkdir -p "$DEST_PARENT"
|
|
|
|
for d in "${DIRS[@]}"; do
|
|
[ -d "$d" ] || {
|
|
echo "Skip: '$d' not found in $(pwd)"
|
|
continue
|
|
}
|
|
|
|
TARGET="$DEST_PARENT/$d"
|
|
echo
|
|
echo "==> Splitting '$d' → '$TARGET'"
|
|
|
|
rm -rf "$TARGET"
|
|
git clone --no-local --branch main --origin origin "$SRC_REPO_ROOT" "$TARGET"
|
|
|
|
(
|
|
cd "$TARGET"
|
|
|
|
git filter-repo --force \
|
|
--path "$d/" \
|
|
--path-rename "$d/:"
|
|
|
|
# ---- Tag rename: '<dir>-X.Y.Z' -> 'vX.Y.Z' (annotated, with message) ----
|
|
# Peel old tags to the commit/object they point to to avoid nested tags.
|
|
while IFS= read -r oldtag; do
|
|
# only proceed if the (filtered) repo still has this tag
|
|
git rev-parse -q --verify "refs/tags/$oldtag" >/dev/null || continue
|
|
|
|
peeled=$(git rev-parse -q --verify "${oldtag}^{}" || true)
|
|
[ -z "$peeled" ] && continue
|
|
|
|
ver="${oldtag#${d}-}"
|
|
newtag="v${ver}"
|
|
|
|
if git rev-parse -q --verify "refs/tags/$newtag" >/dev/null; then
|
|
echo "Tag exists, deleting old: $oldtag"
|
|
git tag -d "$oldtag" >/dev/null
|
|
else
|
|
# annotated tag with message equal to tag name (avoids interactive prompt)
|
|
git -c advice.nestedTag=false tag -a "$newtag" -m "$newtag" "$peeled"
|
|
git tag -d "$oldtag" >/dev/null
|
|
echo "Renamed: $oldtag -> $newtag (at $peeled)"
|
|
fi
|
|
done < <(git tag -l "${d}-*")
|
|
|
|
# standalone: drop the monorepo remote that filter-repo rewired
|
|
git remote remove origin || true
|
|
|
|
echo "Done: $TARGET"
|
|
)
|
|
done
|
|
|
|
echo
|
|
echo "All splits complete under: $DEST_PARENT"
|