
# rg-ühilduvus

`vendor/bin/rg` on ripgrep-stiilis ühilduvusümbris. See aktsepteerib sagedamini kasutatavaid ripgrep lippe, läbib failipuu samamoodi nagu ripgrep ja väljastab sobivad tulemused. Kontrollitud funktsioonide loend põhineb ülesvoolu binaarfaili `rg` vastaste testide tulemustel ja on saadaval lehel [Täpsemad teemad / funktsioonide maatriks](https://greph.inline0.dev/et/docs/advanced/feature-matrix).

Ümbris on õhuke CLI-tõlkija; tegeliku otsingu teeb sama `Greph\Text\TextSearcher` mootor, mida kasutab `vendor/bin/greph`.

## Millal seda kasutada

Kasutage ümbrist, kui:

- Teil on olemas tööriist, agent või skript, mis käivitab juba `rg`.
- Soovite asenduslahendust, mis töötab keskkondades, kuhu ei saa installida ripgrep-i ennast (jagatud majutus, tugevdatud konteinerid, piiratud PaaS).
- Soovite ripgrep kasutusmugavust taristus, kus on ainult PHP.

Kasutage natiivset `vendor/bin/greph`-i, kui:

- Kirjutate uut koodi ega vaja kuju ripgrep CLI.
- Soovite kasutada natiivseid lippe, mida ümbris ei paku (näiteks AST-režiimi).

## Kasutamine

```bash
rg [options] pattern [path...]
rg --files [options] [path...]
```

Paljas käivitus otsib rekursiivselt asukohast `.`:

```bash
./vendor/bin/rg -F "function"
```

`--files` loetleb otsimise asemel kandidaatfailid:

```bash
./vendor/bin/rg --files
./vendor/bin/rg --files --type php
./vendor/bin/rg --files --hidden
```

## JSON-väljund

`--json` väljastab sama sündmuste kujul andmekoorma, mille loob ripgrep:

```bash
./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}}}}
```

`stats`-objektide ajaväärtuseks märgitakse alati null.

See on skeem, mida järgnevad tööriistad ootavad, kui need lubavad sisse ripgrep struktureeritud väljundi. Lihtsama struktuuri jaoks kasutage selle asemel `vendor/bin/greph --json`.

## Kontrollitud funktsioonid

Järgmised lipud on kontrollitud otse `rg`-iga lehel [funktsioonide maatriks](https://greph.inline0.dev/et/docs/advanced/feature-matrix). Ülesvoolu binaarfail ja ümbris annavad iga vastastesti puhul samaväärse väljundi. Kui lipul on lühike ja pikk kirjapilt, kasutab vastastest üht neist ning ümbris käsitleb mõlemat sama suvandina.

### Otsingulipud

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

### Läbija lipud

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

### Väljundilipud

- `--json`

### Ilma vastastestita aktsepteeritud lipud

Ümbris aktsepteerib ka järgmisi lippe, kuid funktsioonide maatriksi vastastestid neid veel ei hõlma:

- `-j N`, `--threads N` (tööliste arv, vt [Paralleeltöölised](https://greph.inline0.dev/et/docs/advanced/parallel))
- `-q`, `--quiet`
- `--no-follow`

## Piirangud

Greph `rg`-ümbris katab otsingu ja läbimise funktsionaalsuse, mida enamik tööriistu ja agente kasutab. Praegu ei paku see järgmisi ripgrep funktsioone:

- Mitmerealine regex (`-U`, `--multiline`)
- Asendamine (`-r`, `--replace`) tekstirežiimis (kasutage selle asemel AST ümberkirjutamist suvandiga `vendor/bin/greph`)
- Kohandatud tüübi definitsioonid (`--type-add`, `--type-clear`)
- Kodeeringulipud (`-E`, `--encoding`)
- `--pre` filtriskriptid
- `--sort`, `--sortr`

Kui mõni lipp puudub, esitage probleem koos ülesvoolu `rg`-i vastu käivitatud vastastesti ja oodatud väljundiga. Uued funktsioonid lisatakse koos nende etalonvastastestidega, nii et kontrollitud funktsioonide loend täieneb pidevalt.

## Käitumise vastavus

Ümbrise eesmärk on käitumise vastavus, mitte baitide täpne kattumine. Väljund on ridade kaupa samaväärne, kuid kosmeetilised üksikasjad võivad erineda (värvikoodid, terminali laiuse järgi kärpimine). [Funktsioonide maatriksi](https://greph.inline0.dev/et/docs/advanced/feature-matrix) vastastestid kontrollivad semantilist samaväärsust, mitte baitide täpseid erinevusi.

Väljundit parsivate agentide ja tööriistade jaoks on iga kontrollitud vastastesti korral parseri jaoks olulised väljad (failitee, reanumber, sisu, sobivuse asukoht) ülesvoolu `rg`-iga bait-baidilt identsed.
