feat(vendor): add forge charm skills
Amolith
created 4 weeks ago
Vendor alxxpersonal/forge as a git subtree under vendor/forge/, symlink
the 14 charm-* skills into skills/, and add:
- vendor/sources: tab-separated manifest of vendored repos
- scripts/vendor-update.fish: pulls updates for all or named vendors
Change summary
scripts/vendor-update.fish | 82 ++++++++++++++++++++++++++++++++++++++++
skills/charm-bubbles | 1
skills/charm-bubbletea | 1
skills/charm-ecosystem | 1
skills/charm-fang | 1
skills/charm-freeze | 1
skills/charm-glamour | 1
skills/charm-glow | 1
skills/charm-gum | 1
skills/charm-harmonica | 1
skills/charm-huh | 1
skills/charm-lipgloss | 1
skills/charm-pop | 1
skills/charm-ultraviolet | 1
skills/charm-vhs | 1
vendor/sources | 4 +
16 files changed, 100 insertions(+)
Detailed changes
@@ -0,0 +1,82 @@
+#!/usr/bin/env fish
+#
+# Update git-subtree-vendored repositories listed in vendor/sources.
+#
+# vendor/sources format (tab-separated):
+# name url branch
+#
+# Lines starting with # are ignored.
+#
+# Usage:
+# scripts/vendor-update.fish # update all vendored repos
+# scripts/vendor-update.fish forge # update only vendor/forge
+
+set repo_root (git -C (status dirname) rev-parse --show-toplevel)
+
+if test $status -ne 0
+ echo "error: not inside a git repository" >&2
+ exit 1
+end
+
+cd $repo_root
+
+set sources_file vendor/sources
+
+if not test -f $sources_file
+ echo "error: $sources_file not found" >&2
+ exit 1
+end
+
+set filter $argv
+set failed 0
+set found 0
+
+while read -l line
+ # Skip comments and blank lines
+ string match -qr '^\s*#' -- $line; and continue
+ string match -qr '^\s*$' -- $line; and continue
+
+ set parts (string split \t -- $line)
+ if test (count $parts) -ne 3
+ echo "skip: malformed line: $line" >&2
+ set failed (math $failed + 1)
+ continue
+ end
+
+ set name $parts[1]
+ set url $parts[2]
+ set branch $parts[3]
+
+ # If specific targets were given, skip non-matching entries
+ if test (count $filter) -gt 0
+ contains $name $filter; or continue
+ end
+
+ set found (math $found + 1)
+
+ if not test -d vendor/$name
+ echo "skip: vendor/$name does not exist (run 'git subtree add' first)" >&2
+ set failed (math $failed + 1)
+ continue
+ end
+
+ echo ":: updating vendor/$name from $url ($branch)"
+ git subtree pull --prefix=vendor/$name $url $branch --squash
+ if test $status -ne 0
+ echo "error: failed to update vendor/$name" >&2
+ set failed (math $failed + 1)
+ else
+ echo ":: vendor/$name updated"
+ end
+ echo
+end <$sources_file
+
+if test $found -eq 0
+ echo "No matching vendored repos found." >&2
+ exit 1
+end
+
+if test $failed -gt 0
+ echo "$failed vendor update(s) failed" >&2
+ exit 1
+end
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-bubbles
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-bubbletea
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-ecosystem
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-fang
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-freeze
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-glamour
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-glow
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-gum
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-harmonica
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-huh
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-lipgloss
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-pop
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-ultraviolet
@@ -0,0 +1 @@
+../vendor/forge/skills/charm-vhs
@@ -0,0 +1,4 @@
+# Vendored git subtree sources
+# Format: name<TAB>url<TAB>branch
+# One entry per line. Lines starting with # are ignored.
+forge https://github.com/alxxpersonal/forge.git main