📓 Refactored version of the original GitHub issue and Python CLI prototype. It replaces Indexd alias manipulation with a file-based approach: tags are stored in a TSV-formatted sidecar file META/tags.tsv
🆕 Added tsv tag store - combines cli and user editable "spreadsheet"
✅ Summary of Refactor:
- Changed
add-links → calypr tag
- Changed
ls-links → calypr ls-tag
- Renamed CLI parser commands, help text, and function bindings accordingly
- Example usage and doc blocks aligned with new naming convention
📓 User Story 1: Tagging Remote Files for Discoverability and Retrieval
As a researcher or developer
I want to associate tags (aliases) with files tracked by Git LFS
So that they can be discovered, categorized, and integrated into metadata workflows
✅ Acceptance Criteria
- I can run
calypr tag <path> <curies> with a wildcard or file path matching Git LFS-managed files
- The
curies argument is a comma-separated list of CURIE-style prefix:value tags
- Tags are validated and maintained in a META/tags.tsv sidecar file
- Only files tracked by Git LFS are processed; others are skipped with a warning
- If
--dry-run is specified, changes are printed but not saved
💻 Example Usage
calypr tag "data/*.bam" "doi:10.1234/abcd,Patient:xyz,Specimen:abc" --dry-run
calypr tag "results/file1.txt" "assay:my-pipeline"
📓 User Story 2: Viewing Tags for Tracked Files
As a project contributor
I want to list tags for Git LFS-tracked files
So that I can ensure metadata consistency and discoverability
✅ Acceptance Criteria
- I can run
calypr ls-tag to list tags for all LFS-tracked files
- I can specify a path or wildcard to filter the listing
- Tags are read from
.meta sidecar JSON files
- If no
.meta file or tags exist, I see a clear message
💻 Example Usage
calypr ls-tag
# ➜ results/file1.txt assay:my-pipeline
# ➜ data/my-file.bam doi:10.1234/abcd,Patient:xyz,Specimen:abc
calypr ls-tag "data/*.bam"
# ➜ data/my-file.bam doi:10.1234/abcd,Patient:xyz,Specimen:abc
📓 Refactored version of the original GitHub issue and Python CLI prototype. It replaces Indexd alias manipulation with a file-based approach: tags are stored in a TSV-formatted sidecar file
META/tags.tsv🆕 Added tsv tag store - combines cli and user editable "spreadsheet"
✅ Summary of Refactor:
add-links→calypr tagls-links→calypr ls-tag📓 User Story 1: Tagging Remote Files for Discoverability and Retrieval
As a researcher or developer
I want to associate tags (aliases) with files tracked by Git LFS
So that they can be discovered, categorized, and integrated into metadata workflows
✅ Acceptance Criteria
calypr tag <path> <curies>with a wildcard or file path matching Git LFS-managed filescuriesargument is a comma-separated list of CURIE-styleprefix:valuetags--dry-runis specified, changes are printed but not saved💻 Example Usage
📓 User Story 2: Viewing Tags for Tracked Files
As a project contributor
I want to list tags for Git LFS-tracked files
So that I can ensure metadata consistency and discoverability
✅ Acceptance Criteria
calypr ls-tagto list tags for all LFS-tracked files.metasidecar JSON files.metafile or tags exist, I see a clear message💻 Example Usage