rg-Kompatibilität
vendor/bin/rg ist ein Kompatibilitätswrapper im Stil von ripgrep. Er akzeptiert die am häufigsten verwendeten ripgrep-Optionen, durchläuft den Dateibaum wie ripgrep und gibt passende Ergebnisse aus. Die geprüfte Funktionsabdeckung wurde anhand von Testläufen mit der Upstream-Binärdatei rg ermittelt und ist unter Erweitert / Funktionsmatrix dokumentiert.
Der Wrapper übersetzt CLI-Optionen direkt; die Suche selbst erledigt dieselbe Engine Greph\Text\TextSearcher, die auch vendor/bin/greph verwendet.
Wann du ihn verwenden solltest
Verwende den Wrapper, wenn:
- Du bereits ein Tool, einen Agenten oder ein Skript hast, das
rgaufruft. - Du einen direkten Ersatz suchst, der auch in Umgebungen funktioniert, in denen du ripgrep selbst nicht installieren kannst (Shared Hosting, gehärtete Container, eingeschränkte PaaS).
- Du die Bedienung von ripgrep auf einer Infrastruktur nutzen möchtest, auf der nur PHP verfügbar ist.
Verwende das native vendor/bin/greph, wenn:
- Du neuen Code schreibst und nicht die ripgrep-Form CLI benötigst.
- Du Zugriff auf native Optionen möchtest, die der Wrapper nicht bereitstellt (zum Beispiel den AST-Modus).
Verwendung
rg [options] pattern [path...]
rg --files [options] [path...]
Ein Aufruf ohne Argumente durchsucht . rekursiv:
./vendor/bin/rg -F "function"
--files listet mögliche Dateien auf, statt sie zu durchsuchen:
./vendor/bin/rg --files
./vendor/bin/rg --files --type php
./vendor/bin/rg --files --hidden
JSON-Ausgabe
--json gibt dieselben ereignisartigen Nutzdaten aus wie 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}}}}
Zeitangaben in den stats-Objekten werden immer als null ausgegeben.
Dieses Schema erwarten nachgelagerte Tools, wenn sie die strukturierte Ausgabe von ripgrep aktivieren. Wenn du ein einfacheres Format möchtest, verwende stattdessen vendor/bin/greph --json.
Geprüfte Funktionsabdeckung
Die folgenden Optionen wurden anhand von rg selbst in der Funktionsmatrix überprüft. Upstream-Binärdatei und Wrapper erzeugen bei jeder Prüfung gleichwertige Ausgaben. Hat eine Option eine Kurz- und Langform, verwendet die Prüfung eine davon; der Wrapper verarbeitet beide als dieselbe Option.
Suchoptionen
-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
Optionen für den Dateibaum
-L,--follow--glob GLOB--type NAME--type-not NAME--no-ignore--hidden--files--files --hidden--files --type NAME
Ausgabeoptionen
--json
Ohne Prüfung akzeptiert
Der Wrapper akzeptiert außerdem die folgenden Optionen, die bisher jedoch nicht durch eine Prüfung in der Funktionsmatrix abgedeckt sind:
-j N,--threads N(Anzahl der Worker, siehe Parallele Worker)-q,--quiet--no-follow
Einschränkungen
Der rg-Wrapper von Greph deckt die Such- und Dateibaumoptionen ab, die von den meisten Tools und Agenten verwendet werden. Die folgenden ripgrep-Funktionen stellt er derzeit nicht bereit:
- Mehrzeilige Regexe (
-U,--multiline) - Ersetzungen (
-r,--replace) im Textmodus (verwende stattdessenvendor/bin/grephfür AST-Umschreibungen) - Benutzerdefinierte Typdefinitionen (
--type-add,--type-clear) - Optionen für die Zeichenkodierung (
-E,--encoding) --pre-Filterskripte--sort,--sortr
Wenn dir eine fehlende Option auffällt, erstelle ein Issue mit der Prüfung, die du gegen Upstream-rg ausgeführt hast, und der erwarteten Ausgabe. Neue Funktionen werden zusammen mit ihren Referenzprüfungen hinzugefügt, sodass die geprüfte Funktionsabdeckung stetig wächst.
Verhaltensgleichheit
Der Wrapper zielt auf Verhaltensgleichheit, nicht auf Byte-Gleichheit. Die Ausgabe ist zeilenweise gleichwertig, kann sich aber in optischen Details unterscheiden (Farbcodes, Kürzung an der Terminalbreite). Die Prüfungen der Funktionsmatrix kontrollieren die semantische Gleichwertigkeit, nicht bytegenaue Unterschiede.
Für Agenten und Tools, die die Ausgabe parsen, sind die relevanten Felder (Dateipfad, Zeilennummer, Inhalt, Position der Übereinstimmung) bei jeder geprüften Prüfung byteidentisch mit Upstream-rg.