rg suderinamumas
vendor/bin/rg yra ripgrep stiliaus suderinamumo apvalkalas. Jis priima dažniausiai naudojamas ripgrep vėliavėles, naršo failų medį taip pat kaip ripgrep ir pateikia atitinkančią išvestį. Patikrintas funkcijų rinkinys atkurtas pagal patikras su pradine rg programa ir pateikiamas skiltyje Išplėstinės funkcijos / funkcijų matrica.
Apvalkalas yra plonas CLI transliatorius; pačią paiešką atlieka tas pats Greph\Text\TextSearcher variklis, kurį naudoja vendor/bin/greph.
Kada naudoti
Naudokite apvalkalą, kai:
- Turite esamą įrankį, agentą arba scenarijų, kuris jau iškviečia
rg. - Norite tiesioginio pakaitalo, veikiančio aplinkose, kuriose negalite įdiegti paties ripgrep (bendrojo naudojimo priegloba, sustiprinto saugumo konteineriai, apribota PaaS).
- Norite ripgrep naudojimo patogumo infrastruktūroje, kurioje yra tik PHP.
Naudokite vietinį vendor/bin/greph, kai:
- Rašote naują kodą ir jums nereikia ripgrep CLI formos.
- Norite naudoti vietines vėliavėles, kurių apvalkalas nepateikia (pavyzdžiui, AST režimą).
Naudojimas
rg [options] pattern [path...]
rg --files [options] [path...]
Paprasta iškvieta rekursyviai ieško .:
./vendor/bin/rg -F "function"
--files pateikia galimus failus, o ne atlieka paiešką:
./vendor/bin/rg --files
./vendor/bin/rg --files --type php
./vendor/bin/rg --files --hidden
JSON išvestis
--json pateikia tą patį įvykiais paremtos struktūros duomenų rinkinį kaip ir 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}}}}
stats objektuose trukmės visada nurodomos kaip nulis.
Tai schema, kurios tikisi tolesni įrankiai, kai įjungia struktūruotą ripgrep išvestį. Jei norite paprastesnės struktūros, naudokite vendor/bin/greph --json.
Patikrintos funkcijos
Toliau pateiktos vėliavėlės patikrintos su pačiu rg, naudojant funkcijų matricą. Per kiekvieną patikrą pradinė programa ir apvalkalas pateikia lygiavertę išvestį. Jei vėliavėlė turi trumpą ir ilgą užrašymo formą, tikrinama viena forma, o apvalkalas abi formas apdoroja kaip tą pačią parinktį.
Paieškos vėliavėlės
-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
Failų naršymo vėliavėlės
-L,--follow--glob GLOB--type NAME--type-not NAME--no-ignore--hidden--files--files --hidden--files --type NAME
Išvesties vėliavėlės
--json
Priimamos be patikros
Apvalkalas taip pat priima šias vėliavėles, tačiau joms dar neatlikta funkcijų matricos patikra:
-j N,--threads N(vykdytojų skaičius, žr. Lygiagretūs vykdytojai)-q,--quiet--no-follow
Apribojimai
Greph rg apvalkalas apima paieškos ir failų naršymo funkcijas, kurias naudoja dauguma įrankių ir agentų. Šiuo metu jame nėra šių ripgrep funkcijų:
- Kelių eilučių regex (
-U,--multiline) - Pakeitimas (
-r,--replace) teksto režimu (vietoj to naudokitevendor/bin/grephAST perrašymą) - Tinkintų tipų apibrėžtys (
--type-add,--type-clear) - Koduotės vėliavėlės (
-E,--encoding) --prefiltravimo scenarijai--sort,--sortr
Jei trūksta vėliavėlės, pateikite problemos aprašą, pridėdami patikrą, kurią atlikote su pradine rg, ir laukiamą išvestį. Naujos funkcijos pateikiamos kartu su etaloninėmis patikromis, todėl patikrintų funkcijų rinkinys tik plečiasi.
Elgsenos lygiavertiškumas
Apvalkalo tikslas – elgsenos, o ne baitų lygiavertiškumas. Eilučių lygmeniu išvestis sutampa, tačiau gali skirtis kosmetinės detalės (spalvų kodai, nukirpimas pagal terminalo plotį). Atliekant funkcijų matricos patikras vertinamas semantinis, o ne tikslus baitų sutapimas.
Įrankiams ir agentams, kurie analizuoja išvestį, kiekvienos patikrintos pradinės rg programos atveju analizatoriui svarbūs laukai (failo kelias, eilutės numeris, turinys, atitikmens vieta) sutampa baitas į baitą.