Preskočiť na obsah

Kompatibilita s rg

vendor/bin/rg je obal kompatibilný so štýlom ripgrep. Prijíma najčastejšie používané prepínače ripgrep, prechádza strom súborov rovnako ako ripgrep a vypisuje zhodný výstup. Overený rozsah vychádza zo skúšobných behov s pôvodným binárnym súborom rg a je uvedený v Rozšírené / Matica funkcií.

Obal je tenká vrstva na preklad CLI; samotné vyhľadávanie vykonáva ten istý modul Greph\Text\TextSearcher, ktorý používa vendor/bin/greph.

Kedy ho použiť

Obal použite, keď:

  • Už máte nástroj, agenta alebo skript, ktorý volá rg.
  • Chcete priamu náhradu použiteľnú v prostrediach, kde nemožno nainštalovať samotné ripgrep (zdieľaný hosting, zabezpečené kontajnery, obmedzené prostredie PaaS).
  • Chcete pohodlné používanie ripgrep na infraštruktúre, kde je k dispozícii iba PHP.

Natívne vendor/bin/greph použite, keď:

  • Píšete nový kód a nepotrebujete formát ripgrep CLI.
  • Chcete používať natívne prepínače, ktoré obal neposkytuje (napríklad režim AST).

Použitie

Shell
rg [options] pattern [path...]
rg --files [options] [path...]

Samotné zavolanie rekurzívne prehľadá .:

Shell
./vendor/bin/rg -F "function"

--files vypíše kandidátne súbory namiesto vyhľadávania:

Shell
./vendor/bin/rg --files
./vendor/bin/rg --files --type php
./vendor/bin/rg --files --hidden

Výstup JSON

--json vytvára údaje v rovnakom tvare ako udalosti, ktoré vytvára ripgrep:

Shell
./vendor/bin/rg --json -F "function walk" src/Greph.php
JSON
{"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}}}}

Časové údaje v objektoch stats sa vždy uvádzajú ako nula.

Túto schému očakávajú nadväzujúce nástroje, keď zapnú štruktúrovaný výstup ripgrep. Ak chcete jednoduchší formát, použite vendor/bin/greph --json.

Overený rozsah

Nasledujúce prepínače boli overené priamo oproti rg v matica funkcií. Pôvodný binárny súbor aj obal vytvárajú pri každom skúšobnom behu ekvivalentný výstup. Ak má prepínač krátky aj dlhý zápis, skúška používa jeden z nich a obal oba rozpozná ako rovnakú možnosť.

Prepínače vyhľadávania

  • -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

Prepínače prechádzača

  • -L, --follow
  • --glob GLOB
  • --type NAME
  • --type-not NAME
  • --no-ignore
  • --hidden
  • --files
  • --files --hidden
  • --files --type NAME

Prepínače výstupu

  • --json

Prijaté bez skúšobného overenia

Obal prijíma aj tieto prepínače, zatiaľ ich však neoveruje žiadna skúška matice funkcií:

Obmedzenia

Obal Greph pre rg pokrýva funkcie vyhľadávania a prechádzania, ktoré používajú najčastejšie nástroje a agenti. V súčasnosti neposkytuje nasledujúce funkcie ripgrep:

  • Viacriadkový regulárny výraz (-U, --multiline)
  • Nahrádzanie v textovom režime (-r, --replace; použite namiesto toho prepisovanie AST pomocou vendor/bin/greph)
  • Vlastné definície typov (--type-add, --type-clear)
  • Prepínače kódovania (-E, --encoding)
  • Filtračné skripty --pre
  • --sort, --sortr

Ak vám chýba nejaký prepínač, nahláste problém spolu s výsledkom skúšky, ktorú ste vykonali voči pôvodnému rg, a očakávaným výstupom. Nové funkcie sa pridávajú spolu s overovacími skúškami, takže overený rozsah sa postupne rozširuje.

Zhoda správania

Obal sa usiluje o zhodu správania, nie o zhodu bajtov. Výstup je ekvivalentný po riadkoch, no môže sa líšiť v nepodstatných detailoch (farebné kódy, skrátenie podľa šírky terminálu). Skúšky použité pre maticu funkcií overujú sémantickú ekvivalenciu, nie rozdiely presné na úrovni bajtov.

V prípade agentov a nástrojov, ktoré analyzujú výstup, sú polia dôležité pre parser (cesta k súboru, číslo riadka, obsah, pozícia zhody) pri každej overenej skúške bajtovo totožné s pôvodným rg.