
# rg Uyumluluğu

`vendor/bin/rg`, ripgrep tarzı bir uyumluluk sarmalayıcısıdır. En sık kullanılan ripgrep bayraklarını kabul eder, dosya ağacında ripgrep ile aynı şekilde gezinir ve eşleşen çıktıyı üretir. Doğrulanmış kapsam, üst kaynak `rg` ikili dosyasına karşı yürütülen denemelerden elde edilmiştir ve [Gelişmiş / Özellik Matrisi](https://greph.inline0.dev/tr/docs/advanced/feature-matrix) bölümünde yer alır.

Sarmalayıcı, ince bir CLI çeviricisidir; gerçek arama işini `vendor/bin/greph` tarafından kullanılanla aynı `Greph\Text\TextSearcher` motoru yapar.

## Ne zaman kullanılır?

Sarmalayıcıyı şu durumlarda kullanın:

- `rg` çağıran mevcut bir aracınız, ajanınız veya betiğiniz varsa.
- ripgrep'i yükleyemediğiniz ortamlarda (paylaşımlı barındırma, güvenliği sıkılaştırılmış konteynerler, kısıtlı PaaS) çalışan, doğrudan kullanılabilir bir alternatif istiyorsanız.
- Yalnızca PHP altyapısında ripgrep kullanım kolaylığı istiyorsanız.

Şu durumlarda yerel `vendor/bin/greph` kullanın:

- Yeni kod yazıyor ve ripgrep CLI biçimine ihtiyaç duymuyorsanız.
- Sarmalayıcının sunmadığı yerel bayraklara (örneğin AST kipi) erişmek istiyorsanız.

## Kullanım

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

Parametresiz çağrı, `.` içinde yinelemeli arama yapar:

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

`--files` arama yapmak yerine aday dosyaları listeler:

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

## JSON çıktısı

`--json`, ripgrep tarafından üretilenle aynı olay biçimli veriyi üretir:

```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` nesnelerindeki süreler her zaman sıfır olarak bildirilir.

Bu, ripgrep'ın yapılandırılmış çıktısını etkinleştirdiklerinde alt araçların beklediği şemadır. Daha basit bir biçim istiyorsanız bunun yerine `vendor/bin/greph --json` kullanın.

## Doğrulanmış kapsam

Aşağıdaki bayraklar, `rg` ikili dosyasına karşı [özellik matrisinde](https://greph.inline0.dev/tr/docs/advanced/feature-matrix) doğrulanmıştır. Her denemede üst kaynak ikili dosyası ile sarmalayıcı eşdeğer çıktı üretir. Bir bayrağın kısa ve uzun yazımı varsa denemede bunlardan biri kullanılır; sarmalayıcı ikisini de aynı seçenek olarak ayrıştırır.

### Arama bayrakları

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

### Gezgin bayrakları

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

### Çıktı bayrakları

- `--json`

### Deneme yapılmadan kabul edilenler

Sarmalayıcı bu bayrakları da kabul eder, ancak özellik matrisi denemeleri henüz bunları kapsamaz:

- `-j N`, `--threads N` (işçi sayısı için bkz. [Paralel İşçiler](https://greph.inline0.dev/tr/docs/advanced/parallel))
- `-q`, `--quiet`
- `--no-follow`

## Sınırlamalar

Greph'ın `rg` sarmalayıcısı, çoğu aracın ve ajanın kullandığı arama ve gezgin kapsamını karşılar. Şu ripgrep özelliklerini şu anda sunmaz:

- Çok satırlı regex (`-U`, `--multiline`)
- Metin kipinde değiştirme (`-r`, `--replace`); bunun yerine `vendor/bin/greph` AST yeniden yazmayı kullanın
- Özel tür tanımları (`--type-add`, `--type-clear`)
- Kodlama bayrakları (`-E`, `--encoding`)
- `--pre` filtre betikleri
- `--sort`, `--sortr`

Eksik bir bayrakla karşılaşırsanız, üst kaynak `rg` ile çalıştırdığınız denemeyi ve beklenen çıktıyı içeren bir sorun bildirin. Yeni özellikler, doğrulanmış kapsamın yalnızca genişlemesini sağlayan doğrulama denemeleriyle birlikte eklenir.

## Davranış eşdeğerliği

Sarmalayıcı, bayt düzeyinde değil davranış düzeyinde eşdeğerliği hedefler. Çıktı satır düzeyinde eşdeğerdir, ancak görsel ayrıntılarda (renk kodları, terminal genişliğine göre kısaltma) farklılık gösterebilir. [özellik matrisi](https://greph.inline0.dev/tr/docs/advanced/feature-matrix) için kullanılan denemeler, bayt düzeyinde birebir farkları değil anlamsal eşdeğerliği denetler.

Çıktıyı ayrıştıran ajan ve araçlar için, ayrıştırmayla ilgili alanlar (dosya yolu, satır numarası, içerik, eşleşme konumu) doğrulanmış her denemede üst kaynak `rg` ile bayt düzeyinde aynıdır.
