Ga naar de inhoud

Compatibiliteit met rg

vendor/bin/rg is een compatibiliteitswrapper in de stijl van ripgrep. De wrapper accepteert de meestgebruikte ripgrep-vlaggen, doorloopt de bestandstructuur op dezelfde manier als ripgrep en genereert overeenkomende uitvoer. De geverifieerde mogelijkheden zijn overgenomen uit tests met de upstream-binary rg en staan in Geavanceerd / Functiematrix.

De wrapper is een eenvoudige CLI-vertaler; het daadwerkelijke zoekwerk wordt uitgevoerd door dezelfde Greph\Text\TextSearcher-engine die vendor/bin/greph gebruikt.

Wanneer gebruik je deze?

Gebruik de wrapper wanneer:

  • Je een bestaande tool, agent of script hebt dat al rg aanroept.
  • Je een direct inzetbare vervanging wilt die werkt in omgevingen waar je ripgrep zelf niet kunt installeren (gedeelde hosting, streng beveiligde containers, beperkte PaaS).
  • Je ripgrep-gebruiksgemak wilt op infrastructuur waarop alleen PHP beschikbaar is.

Gebruik de native vendor/bin/greph wanneer:

  • Je nieuwe code schrijft en de ripgrep-vorm van CLI niet nodig hebt.
  • Je toegang wilt tot native vlaggen die de wrapper niet aanbiedt (bijvoorbeeld de AST-modus).

Gebruik

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

Een aanroep zonder argumenten doorzoekt . recursief:

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

--files geeft kandidaatbestanden weer in plaats van te zoeken:

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

Uitvoer van JSON

--json genereert dezelfde gebeurtenisvormige gegevens als 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}}}}

Tijdmetingen in de stats-objecten worden altijd als nul gerapporteerd.

Dit is het schema dat downstream-tools verwachten wanneer ze de gestructureerde uitvoer van ripgrep gebruiken. Gebruik vendor/bin/greph --json als je een eenvoudigere structuur wilt.

Geverifieerde mogelijkheden

De volgende vlaggen zijn geverifieerd met rg zelf in de functiematrix. De upstream-binary en de wrapper produceren voor elke test dezelfde uitvoer. Als een vlag een korte en een lange schrijfwijze heeft, gebruikt de test er één en verwerkt de wrapper beide als dezelfde optie.

Zoekvlaggen

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

Vlaggen voor het doorlopen van bestanden

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

Uitvoervlaggen

  • --json

Geaccepteerd zonder test

De wrapper accepteert deze vlaggen ook, maar er is nog geen functiematrixtest voor:

Beperkingen

De Greph-wrapper van rg omvat de zoek- en bestandsdoorloopfuncties die de meeste tools en agents gebruiken. Deze biedt momenteel geen ondersteuning voor de volgende functies van ripgrep:

  • Regex over meerdere regels (-U, --multiline)
  • Vervanging (-r, --replace) in tekstmodus (gebruik in plaats daarvan vendor/bin/greph voor AST-herschrijven)
  • Aangepaste typedefinities (--type-add, --type-clear)
  • Vlaggen voor codering (-E, --encoding)
  • Filterscripts voor --pre
  • --sort, --sortr

Als je een ontbrekende vlag tegenkomt, dien dan een issue in met de test die je op de upstream-rg hebt uitgevoerd en de verwachte uitvoer. Nieuwe functies worden toegevoegd met bijbehorende oracle-tests, zodat de geverifieerde mogelijkheden blijven groeien.

Gedragspariteit

De wrapper streeft naar gedragspariteit, niet naar bytepariteit. De uitvoer is regel voor regel gelijkwaardig, maar kan cosmetisch verschillen (kleurcodes, afkappen op terminalbreedte). De tests voor de functiematrix controleren semantische gelijkwaardigheid, geen byte-exacte verschillen.

Voor agents en tools die uitvoer parseren, zijn de velden die relevant zijn voor de parser (bestandspad, regelnummer, inhoud, overeenkomstpositie) voor elke geverifieerde test byte-identiek aan die van de upstream-rg.