Kompatibilitet med rg
vendor/bin/rg er en kompatibilitetswrapper i stil med ripgrep. Den accepterer de mest almindeligt brugte flag fra ripgrep, gennemgår filtræet på samme måde som ripgrep og udsender matchende output. De verificerede funktioner er genskabt ud fra testkørsler mod den oprindelige binære fil rg og findes i Avanceret / funktionsoversigt.
Wrapperen er en tynd oversætter for CLI; selve søgningen udføres af den samme motor Greph\Text\TextSearcher, som vendor/bin/greph bruger.
Hvornår skal den bruges
Brug wrapperen, når:
- Du har et eksisterende værktøj, en agent eller et script, der allerede kalder
rg. - Du ønsker en drop-in-erstatning, der fungerer i miljøer, hvor du ikke kan installere selve ripgrep (delt hosting, hærdede containere, begrænsede PaaS-miljøer).
- Du ønsker ripgrep-arbejdsgange på infrastruktur, der kun har PHP.
Brug native vendor/bin/greph, når:
- Du skriver ny kode og ikke har brug for formen ripgrep CLI.
- Du vil have adgang til native flag, som wrapperen ikke stiller til rådighed (f.eks. AST-tilstand).
Brug
rg [options] pattern [path...]
rg --files [options] [path...]
En kommando uden argumenter søger rekursivt i .:
./vendor/bin/rg -F "function"
--files viser mulige filer i stedet for at søge:
./vendor/bin/rg --files
./vendor/bin/rg --files --type php
./vendor/bin/rg --files --hidden
JSON-output
--json udsender samme hændelsesformede data som ripgrep producerer:
./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}}}}
Tidsangivelserne i objekterne stats rapporteres altid som nul.
Dette er det skema, som downstream-værktøjer forventer, når de aktiverer struktureret output fra ripgrep. Brug vendor/bin/greph --json i stedet, hvis du ønsker en enklere form.
Verificerede funktioner
Følgende flag er verificeret mod selve rg i funktionsoversigten. Både den oprindelige binære fil og wrapperen giver tilsvarende output for hver test. Hvis et flag har en kort og en lang skrivemåde, bruger testen en af dem, og wrapperen fortolker begge som den samme indstilling.
Søgeflag
-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
Flag for filgennemgang
-L,--follow--glob GLOB--type NAME--type-not NAME--no-ignore--hidden--files--files --hidden--files --type NAME
Outputflag
--json
Accepteret uden test
Wrapperen accepterer også disse flag, men de er endnu ikke dækket af en test i funktionsoversigten:
-j N,--threads N(antal arbejdere, se Parallelle arbejdere)-q,--quiet--no-follow
Begrænsninger
Wrapperen rg til Greph dækker de søge- og filgennemgangsfunktioner, som de fleste værktøjer og agenter bruger. Den stiller i øjeblikket ikke følgende funktioner fra ripgrep til rådighed:
- Multilinje-regex (
-U,--multiline) - Erstatning (
-r,--replace) i teksttilstand (brug i stedetvendor/bin/grephtil AST-omskrivning) - Brugerdefinerede typedefinitioner (
--type-add,--type-clear) - Kodningsflag (
-E,--encoding) - Filtreringsscripts til
--pre --sort,--sortr
Hvis du støder på et manglende flag, kan du oprette en sag med den test, du kørte mod den oprindelige rg, og det forventede output. Nye funktioner tilføjes sammen med deres referenceprøver, så de verificerede funktioner bliver udvidet.
Adfærdsmæssig overensstemmelse
Wrapperen tilstræber adfærdsmæssig overensstemmelse, ikke byte-for-byte-overensstemmelse. Outputtet er linjeækvivalent, men kosmetiske detaljer kan variere (farvekoder, afkortning efter terminalbredde). Testene i funktionsoversigten kontrollerer semantisk ækvivalens, ikke bytepræcise forskelle.
For agenter og værktøjer, der fortolker output, er de felter, som parseren bruger (filsti, linjenummer, indhold, matchposition), byteidentiske med output fra den oprindelige rg for alle verificerede test.