Gå til indhold

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

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

En kommando uden argumenter søger rekursivt i .:

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

--files viser mulige filer i stedet for at søge:

Shell
./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:

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

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:

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 stedet vendor/bin/greph til 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.