(sigil deps redirects)
(sigil deps redirects) - Dependency Redirects
Allows redirecting dependencies during development, enabling work on libraries while building apps that depend on them.
Usage: Load redirects from a file via SIGILREDIRECTS env var: SIGILREDIRECTS=./my-redirects.sgl sigil build
Or via --redirects flag: sigil build --redirects ./my-redirects.sgl
Redirects file format: (redirects repos: (list (for-repo url: "https://github.com/user/repo" use: (from-path dir: "/local/path"))) packages: (list (for-package name: "pkg-name" use: (from-path dir: "/local/path"))))
Exports
redirectsprocedureContainer for all dependency redirects.
(redirects
repos: (list ...)
packages: (list ...))redirects?procedureTest if a value is a redirects struct.
redirects-reposprocedureList of for-repo entries for URL-based redirection.
redirects-packagesprocedureList of for-package entries for package-name-based redirection.
%for-repo--typevariableList of for-package entries for package-name-based redirection.
for-repoprocedureRedirect all packages from a repository URL to a different dep spec.
(for-repo
url: "https://github.com/user/repo"
use: (from-path dir: "/home/user/Projects/repo"))for-repo?procedureTest if a value is a for-repo struct.
for-repo-urlprocedureSource URL to match (exact match after normalization).
for-repo-useprocedureReplacement dep spec (from-path or from-git).
%for-package--typevariableReplacement dep spec (from-path or from-git).
for-packageprocedureRedirect a package by name to a different dep spec.
(for-package
name: "sigil-json"
use: (from-path dir: "/local/path"))for-package?procedureTest if a value is a for-package struct.
for-package-nameprocedurePackage name to match.
for-package-useprocedureReplacement dep spec (from-path or from-git).
normalize-urlprocedureNormalize a URL for comparison. Strips #ref suffix, trailing slashes, and .git suffix.
find-for-repoprocedureFind a for-repo redirect matching the given URL. Returns the for-repo struct or #f if not found.
find-for-packageprocedureFind a for-package redirect matching the given package name. Returns the for-package struct or #f if not found.
apply-redirectsprocedureApply redirects to a dependency. Returns a new dep spec if redirected, or the original dep if not.
Precedence:
- for-package (match by name) - highest priority
- for-repo (match by URL) - for from-git deps only
- Original dep - no redirect
apply-repo-redirectprocedureApply a for-repo redirect to a from-git dependency. Preserves subpath/package from the original dep when not overridden.
dep-nameprocedureGet the package name from a dependency. Works for from-git, from-path, and from-workspace deps.
load-redirectsprocedureLoad and validate a redirects file. Returns <redirects> or raises an error if invalid.
read-all-exprsprocedureRead all expressions from a port
get-active-redirectsprocedureGet active redirects from environment or CLI option. Returns a redirects struct or #f if none configured.