Compatibiliteit met rg
vendor/bin/rg is een compatibiliteitswrapper in de stijl van ripgrep. De wrapper accepteert de meestgebruikte ripgrep-vlaggen, doorloopt de bestandstructuur op dezelfde manier als ripgrep en genereert overeenkomende uitvoer. De geverifieerde mogelijkheden zijn overgenomen uit tests met de upstream-binary rg en staan in Geavanceerd / Functiematrix.
De wrapper is een eenvoudige CLI-vertaler; het daadwerkelijke zoekwerk wordt uitgevoerd door dezelfde Greph\Text\TextSearcher-engine die vendor/bin/greph gebruikt.
Wanneer gebruik je deze?
Gebruik de wrapper wanneer:
- Je een bestaande tool, agent of script hebt dat al
rgaanroept. - Je een direct inzetbare vervanging wilt die werkt in omgevingen waar je ripgrep zelf niet kunt installeren (gedeelde hosting, streng beveiligde containers, beperkte PaaS).
- Je ripgrep-gebruiksgemak wilt op infrastructuur waarop alleen PHP beschikbaar is.
Gebruik de native vendor/bin/greph wanneer:
- Je nieuwe code schrijft en de ripgrep-vorm van CLI niet nodig hebt.
- Je toegang wilt tot native vlaggen die de wrapper niet aanbiedt (bijvoorbeeld de AST-modus).
Gebruik
rg [options] pattern [path...]
rg --files [options] [path...]
Een aanroep zonder argumenten doorzoekt . recursief:
./vendor/bin/rg -F "function"
--files geeft kandidaatbestanden weer in plaats van te zoeken:
./vendor/bin/rg --files
./vendor/bin/rg --files --type php
./vendor/bin/rg --files --hidden
Uitvoer van JSON
--json genereert dezelfde gebeurtenisvormige gegevens als ripgrep:
./vendor/bin/rg --json -F "function walk" src/Greph.php
{"type":"begin","data":{"path":{"text":"src/Greph.php"}}}
{"type":"match","data":{"path":{"text":"src/Greph.php"},"lines":{"text":" public static function walk(string|array $paths, ?WalkOptions $options = null): FileList\n"},"line_number":41,"absolute_offset":1034,"submatches":[{"match":{"text":"function walk"},"start":18,"end":31}]}}
{"type":"end","data":{"path":{"text":"src/Greph.php"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":0,"human":"0.000000s"},"searches":1,"searches_with_match":1,"bytes_searched":13383,"bytes_printed":282,"matched_lines":1,"matches":1}}}
{"type":"summary","data":{"elapsed_total":{"human":"0.000000s","nanos":0,"secs":0},"stats":{"bytes_printed":282,"bytes_searched":13383,"matched_lines":1,"matches":1,"searches":1,"searches_with_match":1,"elapsed":{"human":"0.000000s","nanos":0,"secs":0}}}}
Tijdmetingen in de stats-objecten worden altijd als nul gerapporteerd.
Dit is het schema dat downstream-tools verwachten wanneer ze de gestructureerde uitvoer van ripgrep gebruiken. Gebruik vendor/bin/greph --json als je een eenvoudigere structuur wilt.
Geverifieerde mogelijkheden
De volgende vlaggen zijn geverifieerd met rg zelf in de functiematrix. De upstream-binary en de wrapper produceren voor elke test dezelfde uitvoer. Als een vlag een korte en een lange schrijfwijze heeft, gebruikt de test er één en verwerkt de wrapper beide als dezelfde optie.
Zoekvlaggen
-F,--fixed-strings-i,--ignore-case-w,--word-regexp-v,--invert-match-c,--count-l,--files-with-matches--files-without-match-I,--no-filename-H,--with-filename-n,--line-number-A N,--after-context N-B N,--before-context N-C N,--context N-m N,--max-count N-e P,--regexp P
Vlaggen voor het doorlopen van bestanden
-L,--follow--glob GLOB--type NAME--type-not NAME--no-ignore--hidden--files--files --hidden--files --type NAME
Uitvoervlaggen
--json
Geaccepteerd zonder test
De wrapper accepteert deze vlaggen ook, maar er is nog geen functiematrixtest voor:
-j N,--threads N(aantal workers, zie Parallelle workers)-q,--quiet--no-follow
Beperkingen
De Greph-wrapper van rg omvat de zoek- en bestandsdoorloopfuncties die de meeste tools en agents gebruiken. Deze biedt momenteel geen ondersteuning voor de volgende functies van ripgrep:
- Regex over meerdere regels (
-U,--multiline) - Vervanging (
-r,--replace) in tekstmodus (gebruik in plaats daarvanvendor/bin/grephvoor AST-herschrijven) - Aangepaste typedefinities (
--type-add,--type-clear) - Vlaggen voor codering (
-E,--encoding) - Filterscripts voor
--pre --sort,--sortr
Als je een ontbrekende vlag tegenkomt, dien dan een issue in met de test die je op de upstream-rg hebt uitgevoerd en de verwachte uitvoer. Nieuwe functies worden toegevoegd met bijbehorende oracle-tests, zodat de geverifieerde mogelijkheden blijven groeien.
Gedragspariteit
De wrapper streeft naar gedragspariteit, niet naar bytepariteit. De uitvoer is regel voor regel gelijkwaardig, maar kan cosmetisch verschillen (kleurcodes, afkappen op terminalbreedte). De tests voor de functiematrix controleren semantische gelijkwaardigheid, geen byte-exacte verschillen.
Voor agents en tools die uitvoer parseren, zijn de velden die relevant zijn voor de parser (bestandspad, regelnummer, inhoud, overeenkomstpositie) voor elke geverifieerde test byte-identiek aan die van de upstream-rg.