Přejít k obsahu

Kompatibilita s rg

vendor/bin/rg je wrapper kompatibilní se stylem ripgrep. Přijímá nejčastěji používané příznaky ripgrep, prochází strom souborů stejně jako ripgrep a vypisuje odpovídající výsledky. Ověřené možnosti vycházejí z testovacích běhů s upstreamovým binárním souborem rg a jsou uvedeny v Rozšířené funkce / Matice funkcí.

Wrapper je tenká překladová vrstva CLI; samotné vyhledávání zajišťuje stejný engine Greph\Text\TextSearcher, který používá vendor/bin/greph.

Kdy jej použít

Wrapper použijte, když:

  • Máte existující nástroj, agenta nebo skript, který už spouští rg.
  • Chcete přímou náhradu, která funguje v prostředích, kde nelze nainstalovat samotný ripgrep (sdílený hosting, zabezpečené kontejnery, omezené PaaS).
  • Chcete pohodlí ripgrep na infrastruktuře, kde je k dispozici pouze PHP.

Nativní vendor/bin/greph použijte, když:

  • Píšete nový kód a nepotřebujete rozhraní ripgrep CLI.
  • Chcete používat nativní příznaky, které wrapper nezpřístupňuje (například režim AST).

Použití

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

Samotné spuštění rekurzivně prohledá .:

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

--files vypíše kandidátní soubory místo vyhledávání:

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

Výstup JSON

--json vydává stejná data ve tvaru událostí jako 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}}}}

Časy v objektech stats se vždy uvádějí jako nula.

Toto je schéma, které očekávají navazující nástroje při zapnutí strukturovaného výstupu ripgrep. Pokud chcete jednodušší formát, použijte místo toho vendor/bin/greph --json.

Ověřené možnosti

Následující příznaky jsou ověřeny přímo proti rg v matici funkcí. Upstreamový binární soubor i wrapper vytvářejí při každém testu rovnocenný výstup. Má-li příznak krátký i dlouhý zápis, test používá jeden z nich a wrapper oba zpracuje jako tutéž volbu.

Příznaky vyhledávání

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

Příznaky procházení

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

Příznaky výstupu

  • --json

Přijímané bez testu

Wrapper přijímá také následující příznaky, na které se zatím nevztahuje žádný test matice funkcí:

Omezení

Wrapper rg pro Greph pokrývá možnosti vyhledávání a procházení, které využívá většina nástrojů a agentů. V současnosti nezpřístupňuje tyto funkce ripgrep:

  • Víceřádkový regulární výraz (-U, --multiline)
  • Náhrada (-r, --replace) v textovém režimu (místo toho použijte přepis AST vendor/bin/greph)
  • Vlastní definice typů (--type-add, --type-clear)
  • Příznaky kódování (-E, --encoding)
  • Filtrační skripty --pre
  • --sort, --sortr

Pokud narazíte na chybějící příznak, založte hlášení a přiložte test provedený proti upstreamovému rg i očekávaný výstup. Nové funkce se přidávají spolu s odpovídajícími referenčními testy, takže se ověřené možnosti postupně rozšiřují.

Shoda chování

Cílem wrapperu je shoda chování, nikoli shoda po bajtech. Výstup odpovídá po řádcích, ale může se lišit v kosmetických detailech (barevné kódy, zkrácení podle šířky terminálu). Testy použité v matici funkcí ověřují sémantickou shodu, nikoli přesnou shodu po bajtech.

U agentů a nástrojů, které výstup zpracovávají, jsou pole důležitá pro parser (cesta k souboru, číslo řádku, obsah, pozice shody) pro každý ověřený test po bajtech totožná s upstreamovým rg.