rg-kompatibilitás
A vendor/bin/rg ripgrep-stílusú kompatibilitási burkoló. Elfogadja a leggyakrabban használt ripgrep jelzőket, ugyanúgy járja be a fákat, ahogyan a ripgrep, és egyező kimenetet állít elő. Az ellenőrzött felület a felsőbb szintű rg bináris fájllal végzett próbaeredmények alapján készült, és az Haladó / Funkciómátrix oldalon található.
A burkoló egy vékony CLI-fordító; a keresést ugyanaz a Greph\Text\TextSearcher motor végzi, amelyet a vendor/bin/greph is használ.
Mikor használja
Akkor használja a burkolót, ha:
- Van egy meglévő eszköze, ügynöke vagy szkriptje, amely már a
rgeszközt hívja. - Olyan közvetlenül behelyettesíthető megoldást szeretne, amely olyan környezetben is működik, ahol magát a ripgrep eszközt nem telepítheti (megosztott tárhelyen, megerősített konténerekben, korlátozott PaaS-környezetekben).
- PHP-alapú infrastruktúrán szeretné élvezni a ripgrep használatának kényelmét.
Akkor használja a natív vendor/bin/greph eszközt, ha:
- Új kódot ír, és nincs szüksége a ripgrep CLI formátumára.
- Hozzá szeretne férni a burkoló által nem elérhető natív jelzőkhöz (például az AST-módhoz).
Használat
rg [options] pattern [path...]
rg --files [options] [path...]
Az argumentum nélküli meghívás rekurzívan keres a . alatt:
./vendor/bin/rg -F "function"
A --files keresés helyett a lehetséges fájlokat listázza:
./vendor/bin/rg --files
./vendor/bin/rg --files --type php
./vendor/bin/rg --files --hidden
JSON kimenet
A --json ugyanazt az eseményformájú adathalmazt állítja elő, mint a 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}}}}
A stats objektumokban szereplő időzítések mindig nullaként jelennek meg.
Ezt a sémát várják az alárendelt eszközök, amikor engedélyezik a ripgrep strukturált kimenetét. Ha egyszerűbb formátumot szeretne, használja inkább ezt: vendor/bin/greph --json.
Ellenőrzött felület
A következő jelzők ellenőrzése közvetlenül a rg programon történt, az funkciómátrix szerint. Mind a felsőbb szintű bináris fájl, mind a burkoló azonos kimenetet ad minden próbánál. Ha egy jelzőnek van rövid és hosszú alakja, a próba ezek egyikét használja, a burkoló pedig mindkettőt ugyanazon beállításként értelmezi.
Keresési jelzők
-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
Bejárási jelzők
-L,--follow--glob GLOB--type NAME--type-not NAME--no-ignore--hidden--files--files --hidden--files --type NAME
Kimeneti jelzők
--json
Próba nélkül elfogadott jelzők
A burkoló ezeket a jelzőket is elfogadja, de a funkciómátrix még nem tartalmaz hozzájuk próbát:
-j N,--threads N(munkásszám, lásd: Párhuzamos munkások)-q,--quiet--no-follow
Korlátozások
A Greph rg-burkolója a legtöbb eszköz és ügynök által használt keresési és bejárási felületet biztosítja. Jelenleg a következő ripgrep funkciókat nem teszi elérhetővé:
- Többsoros reguláris kifejezés (
-U,--multiline) - Helyettesítés (
-r,--replace) szöveges módban (használja helyette azvendor/bin/grephAST-átírást) - Egyéni típusdefiníciók (
--type-add,--type-clear) - Kódolási jelzők (
-E,--encoding) --preszűrőszkriptek--sort,--sortr
Ha hiányzó jelzőbe ütközik, nyisson hibajegyet az upstream rg ellen futtatott próbával és az elvárt kimenettel együtt. Az új funkciók az ellenőrző próbákkal együtt jelennek meg, így az ellenőrzött felület folyamatosan bővül.
Viselkedésbeli egyezés
A burkoló viselkedésbeli, nem pedig bájtszintű egyezésre törekszik. A kimenet soronként azonos, de kozmetikai részletekben eltérhet (színkódok, terminálszélesség miatti csonkítás). A funkciómátrix próbái szemantikai egyezést ellenőriznek, nem bájtról bájtra történő azonosságot.
A kimenetet feldolgozó ügynökök és eszközök számára a parser szempontjából lényeges mezők (fájlútvonal, sorszám, tartalom, egyezés pozíciója) minden ellenőrzött próbánál bájtról bájtra azonosak az upstream rg kimenetével.