Hoppa till innehåll

Kompatibilitet med rg

vendor/bin/rg är ett kompatibilitetsomslag i ripgrep-stil. Det tar emot de vanligaste flaggorna i ripgrep, söker igenom filträdet på samma sätt som ripgrep och skriver ut matchande resultat. De verifierade funktionerna är återgivna från testkörningar mot uppströmsversionens binärfil rg och finns i Avancerat / funktionsmatris.

Omslaget är en tunn översättare av CLI; själva sökningen utförs av samma motor i Greph\Text\TextSearcher som vendor/bin/greph använder.

När du ska använda det

Använd omslaget när:

  • Du har ett befintligt verktyg, en agent eller ett skript som redan anropar rg.
  • Du vill ha en direkt ersättare som fungerar i miljöer där du inte kan installera ripgrep självt (delad hosting, härdade containrar, begränsade PaaS-miljöer).
  • Du vill ha ripgrep-ergonomi på infrastruktur där endast PHP finns.

Använd inbyggda vendor/bin/greph när:

  • Du skriver ny kod och inte behöver formen ripgrep CLI.
  • Du vill använda inbyggda flaggor som omslaget inte erbjuder (till exempel AST-läge).

Användning

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

Ett kommando utan argument genomsöker . rekursivt:

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

--files visar kandidater bland filer i stället för att söka:

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

Utdata från JSON

--json skickar ut samma händelseformade innehåll som ripgrep producerar:

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

Tiderna i objekten stats rapporteras alltid som noll.

Det här är schemat som nedströmsverktyg förväntar sig när de aktiverar den strukturerade utdatafunktionen för ripgrep. Använd vendor/bin/greph --json i stället om du vill ha en enklare struktur.

Verifierade funktioner

Följande flaggor har verifierats mot själva rg i funktionsmatrisen. Den uppströms binärfilen och omslaget ger likvärdig utdata för varje test. Om en flagga har en kort och en lång stavning använder testet den ena, och omslaget tolkar båda som samma alternativ.

Sökflaggor

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

Genomsökningsflaggor

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

Utdataflaggor

  • --json

Accepteras utan test

Omslaget accepterar även dessa flaggor, men ingen testkörning för funktionsmatrisen täcker dem ännu:

Begränsningar

Omslaget för Greph rg täcker sök- och genomsökningsfunktionerna som används av de flesta verktyg och agenter. Följande ripgrep-funktioner är för närvarande inte tillgängliga:

  • Flerradiga regex (-U, --multiline)
  • Ersättning (-r, --replace) i textläge (använd AST-omskrivning med vendor/bin/greph i stället)
  • Anpassade typdefinitioner (--type-add, --type-clear)
  • Kodningsflaggor (-E, --encoding)
  • Filter för skript med --pre
  • --sort, --sortr

Om du stöter på en flagga som saknas kan du skapa ett ärende med testkörningen du gjorde mot uppströmsversionen av rg och den förväntade utdatan. Nya funktioner läggs till tillsammans med sina jämförelsetester, så att de verifierade funktionerna fortsätter att utökas.

Beteendeparitet

Omslaget eftersträvar beteendeparitet, inte byteparitet. Utdata motsvarar varandra rad för rad, men kosmetiska detaljer kan skilja sig (färgkoder, trunkering efter terminalbredd). Testerna i funktionsmatrisen kontrollerar semantisk likvärdighet, inte exakta byteskillnader.

För agenter och verktyg som tolkar utdata är fälten som är relevanta för parsern (filsökväg, radnummer, innehåll, matchningsposition) byteidentiska med uppströmsversionen av rg i varje verifierat test.