Compatibilitate cu rg
vendor/bin/rg este un wrapper de compatibilitate în stilul ripgrep. Acceptă cele mai utilizate opțiuni ripgrep, parcurge arborele de fișiere la fel ca ripgrep și emite rezultatele care se potrivesc. Interfața verificată, reprodusă pe baza testelor efectuate cu binarul upstream rg, este disponibilă în Avansat / Matricea de funcționalități.
Wrapperul este un traducător simplu CLI; căutarea propriu-zisă este efectuată de același motor Greph\Text\TextSearcher pe care îl folosește vendor/bin/greph.
Când să îl folosiți
Folosiți wrapperul când:
- Aveți deja un instrument, agent sau script care apelează
rg. - Doriți un înlocuitor direct care funcționează în medii în care nu puteți instala ripgrep propriu-zis (găzduire partajată, containere securizate, platforme PaaS cu restricții).
- Doriți ușurința în utilizare a ripgrep pe infrastructură care oferă numai PHP.
Folosiți vendor/bin/greph nativ când:
- Scrieți cod nou și nu aveți nevoie de forma ripgrep CLI.
- Doriți acces la opțiuni native pe care wrapperul nu le expune (de exemplu, modul AST).
Utilizare
rg [options] pattern [path...]
rg --files [options] [path...]
O invocare fără argumente caută recursiv în .:
./vendor/bin/rg -F "function"
--files listează fișierele candidate în loc să caute:
./vendor/bin/rg --files
./vendor/bin/rg --files --type php
./vendor/bin/rg --files --hidden
Ieșire JSON
--json emite aceeași încărcătură utilă structurată ca evenimente pe care o produce 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}}}}
Duratele din obiectele stats sunt întotdeauna raportate ca zero.
Aceasta este schema pe care o așteaptă instrumentele din aval când activează ieșirea structurată a lui ripgrep. Pentru o structură mai simplă, folosiți vendor/bin/greph --json.
Interfață verificată
Următoarele opțiuni au fost verificate chiar în rg și sunt listate în matricea de funcționalități. Binarul upstream și wrapperul produc rezultate echivalente pentru fiecare test. Când o opțiune are o formă scurtă și una lungă, testul folosește una dintre ele, iar wrapperul le interpretează pe amândouă ca aceeași opțiune.
Opțiuni de căutare
-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
Opțiuni pentru parcurgere
-L,--follow--glob GLOB--type NAME--type-not NAME--no-ignore--hidden--files--files --hidden--files --type NAME
Opțiuni de ieșire
--json
Acceptate fără un test de verificare
Wrapperul acceptă și următoarele opțiuni, pentru care încă nu există teste în matricea de funcționalități:
-j N,--threads N(numărul de lucrători; consultați Lucrători paraleli)-q,--quiet--no-follow
Limitări
Wrapperul rg al Greph acoperă funcțiile de căutare și parcurgere pe care le folosesc majoritatea instrumentelor și agenților. În prezent, nu expune următoarele funcții ripgrep:
- Expresii regulate pe mai multe linii (
-U,--multiline) - Înlocuire (
-r,--replace) în modul text (folosiți în schimb rescrierea ASTvendor/bin/greph) - Definiții de tipuri personalizate (
--type-add,--type-clear) - Opțiuni pentru codificare (
-E,--encoding) - Scripturi de filtrare
--pre --sort,--sortr
Dacă vă lipsește o opțiune, raportați problema și includeți testul efectuat cu rg upstream și rezultatul așteptat. Funcțiile noi sunt adăugate împreună cu testele lor de referință, astfel încât interfața verificată să se extindă în continuare.
Paritate de comportament
Wrapperul urmărește paritatea de comportament, nu identitatea la nivel de octet. Liniile din ieșire sunt echivalente, dar detaliile cosmetice pot diferi (coduri de culoare, trunchiere în funcție de lățimea terminalului). Testele folosite de matricea de funcționalități verifică echivalența semantică, nu diferențele exacte la nivel de octet.
Pentru agenții și instrumentele care analizează ieșirea, câmpurile relevante pentru analizator (calea fișierului, numărul liniei, conținutul, poziția potrivirii) sunt identice la nivel de octet cu cele din rg upstream pentru fiecare test verificat.