
# Kompatibilita s rg

`vendor/bin/rg` je obal kompatibilný so štýlom ripgrep. Prijíma najčastejšie používané prepínače ripgrep, prechádza strom súborov rovnako ako ripgrep a vypisuje zhodný výstup. Overený rozsah vychádza zo skúšobných behov s pôvodným binárnym súborom `rg` a je uvedený v [Rozšírené / Matica funkcií](https://greph.inline0.dev/sk/docs/advanced/feature-matrix).

Obal je tenká vrstva na preklad CLI; samotné vyhľadávanie vykonáva ten istý modul `Greph\Text\TextSearcher`, ktorý používa `vendor/bin/greph`.

## Kedy ho použiť

Obal použite, keď:

- Už máte nástroj, agenta alebo skript, ktorý volá `rg`.
- Chcete priamu náhradu použiteľnú v prostrediach, kde nemožno nainštalovať samotné ripgrep (zdieľaný hosting, zabezpečené kontajnery, obmedzené prostredie PaaS).
- Chcete pohodlné používanie ripgrep na infraštruktúre, kde je k dispozícii iba PHP.

Natívne `vendor/bin/greph` použite, keď:

- Píšete nový kód a nepotrebujete formát ripgrep CLI.
- Chcete používať natívne prepínače, ktoré obal neposkytuje (napríklad režim AST).

## Použitie

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

Samotné zavolanie rekurzívne prehľadá `.`:

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

`--files` vypíše kandidátne súbory namiesto vyhľadávania:

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

## Výstup JSON

`--json` vytvára údaje v rovnakom tvare ako udalosti, ktoré vytvára 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}}}}
```

Časové údaje v objektoch `stats` sa vždy uvádzajú ako nula.

Túto schému očakávajú nadväzujúce nástroje, keď zapnú štruktúrovaný výstup ripgrep. Ak chcete jednoduchší formát, použite `vendor/bin/greph --json`.

## Overený rozsah

Nasledujúce prepínače boli overené priamo oproti `rg` v [matica funkcií](https://greph.inline0.dev/sk/docs/advanced/feature-matrix). Pôvodný binárny súbor aj obal vytvárajú pri každom skúšobnom behu ekvivalentný výstup. Ak má prepínač krátky aj dlhý zápis, skúška používa jeden z nich a obal oba rozpozná ako rovnakú možnosť.

### Prepínače vyhľadávania

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

### Prepínače prechádzača

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

### Prepínače výstupu

- `--json`

### Prijaté bez skúšobného overenia

Obal prijíma aj tieto prepínače, zatiaľ ich však neoveruje žiadna skúška matice funkcií:

- `-j N`, `--threads N` (počet pracovníkov, pozrite si časť [Paralelní pracovníci](https://greph.inline0.dev/sk/docs/advanced/parallel))
- `-q`, `--quiet`
- `--no-follow`

## Obmedzenia

Obal Greph pre `rg` pokrýva funkcie vyhľadávania a prechádzania, ktoré používajú najčastejšie nástroje a agenti. V súčasnosti neposkytuje nasledujúce funkcie ripgrep:

- Viacriadkový regulárny výraz (`-U`, `--multiline`)
- Nahrádzanie v textovom režime (`-r`, `--replace`; použite namiesto toho prepisovanie AST pomocou `vendor/bin/greph`)
- Vlastné definície typov (`--type-add`, `--type-clear`)
- Prepínače kódovania (`-E`, `--encoding`)
- Filtračné skripty `--pre`
- `--sort`, `--sortr`

Ak vám chýba nejaký prepínač, nahláste problém spolu s výsledkom skúšky, ktorú ste vykonali voči pôvodnému `rg`, a očakávaným výstupom. Nové funkcie sa pridávajú spolu s overovacími skúškami, takže overený rozsah sa postupne rozširuje.

## Zhoda správania

Obal sa usiluje o zhodu správania, nie o zhodu bajtov. Výstup je ekvivalentný po riadkoch, no môže sa líšiť v nepodstatných detailoch (farebné kódy, skrátenie podľa šírky terminálu). Skúšky použité pre [maticu funkcií](https://greph.inline0.dev/sk/docs/advanced/feature-matrix) overujú sémantickú ekvivalenciu, nie rozdiely presné na úrovni bajtov.

V prípade agentov a nástrojov, ktoré analyzujú výstup, sú polia dôležité pre parser (cesta k súboru, číslo riadka, obsah, pozícia zhody) pri každej overenej skúške bajtovo totožné s pôvodným `rg`.
