Skip to content

feat: add PURL copy semantics - #21

Open
indexzero wants to merge 5 commits into
mainfrom
feat/cp-semantics
Open

feat: add PURL copy semantics#21
indexzero wants to merge 5 commits into
mainfrom
feat/cp-semantics

Conversation

@indexzero

@indexzero indexzero commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • keep vlurp owner/repository as the easy, first-documented fetch interface
  • add precise vlurp SOURCE... DEST copying using pkg:github PURLs
  • preserve repository shorthand, --filter, and all named presets as first-class supported interfaces
  • add repeatable, case-sensitive --glob and case-insensitive --iglob transfer patterns; leading ! excludes matches
  • let --preset compose with PURL copy operands, with explicit transfer patterns refining preset rules
  • copy source matches with familiar basename semantics and secure destination preflight
  • integrate PURL sources and transfer rules with lineage, verification, catalogs, batch manifests, pin, outdated, and upgrade
  • add a minor changeset and document the cohesive operand/pattern model
vlurp \
  'pkg:github/mattpocock/skills#skills/in-progress/writing-*' \
  ./skills/ \
  --preset skills \
  --iglob '**/skill.md'

The operands determine source selection and destination placement. Presets and transfer globs determine which files beneath each selected source are copied.

Verification

  • pnpm test — 142 passed
  • pnpm lint — passed with 2 pre-existing scanner warnings
  • pnpm test:e2e:ci — live GitHub redirect, packed-install, and combined preset/glob/iglob PURL coverage passed; Linux executes the PTY cases in CI
  • git diff --check

The branch is rebased onto the post-2.0.1 main release commit.

Model GitHub PURL sources and glob-bearing subpaths as explicit copy plans before mutating the destination. Add root-relative lineage so verification and catalogs follow the copied layout, while rejecting traversal, links, special files, collisions, and metadata replacement.
Accept vlurp SOURCE... DEST with PURL-pattern sources and keep legacy fetch flags as a migration path. Carry the same source model through batch, pin, outdated, upgrade, verification lineage, and comment-preserving vlurpfile rewrites.
Document the cp operand model, PURL pattern extension, destination rules, safety constraints, lineage, and manifest migration. Add live GitHub and Linux PTY coverage plus a minor release changeset.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant