İçeriğe geç

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

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

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

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

--files arama yapmak yerine aday dosyaları listeler:

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

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

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