
# rg saderība

`vendor/bin/rg` ir ar ripgrep saderīgs iesaiņotājs. Tas pieņem visbiežāk lietotos ripgrep karodziņus, pārlūko failu koku tāpat kā ripgrep un izvada atbilstības. Pārbaudītā funkcionalitāte ir iegūta, veicot pārbaudes ar sākotnējo `rg` bināro failu, un aprakstīta sadaļā [Papildu informācija / Funkciju matrica](https://greph.inline0.dev/lv/docs/advanced/feature-matrix).

Iesaiņotājs ir vienkāršs CLI tulkotājs; pašu meklēšanu veic tas pats `Greph\Text\TextSearcher` dzinis, ko izmanto `vendor/bin/greph`.

## Kad to izmantot

Izmantojiet iesaiņotāju, ja:

- Jums jau ir rīks, aģents vai skripts, kas izsauc `rg`.
- Vēlaties uzreiz lietojamu aizstājēju, kas darbojas vidēs, kurās nevarat instalēt pašu ripgrep (koplietojamā mitināšanā, nostiprinātos konteineros vai ierobežotā PaaS vidē).
- Vēlaties ripgrep lietošanas ērtumu infrastruktūrā, kur pieejams tikai PHP.

Izmantojiet vietējo `vendor/bin/greph`, ja:

- Rakstāt jaunu kodu un jums nav vajadzīga ripgrep CLI forma.
- Vēlaties izmantot vietējos karodziņus, ko iesaiņotājs nepiedāvā (piemēram, AST režīmu).

## Lietošana

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

Vienkāršs izsaukums rekursīvi meklē `.`:

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

`--files` uzskaita kandidātfailus, neveicot meklēšanu:

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

## JSON izvade

`--json` izvada tādas pašas formas notikumu datus kā 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}}}}
```

Objektos `stats` laiks vienmēr tiek norādīts kā nulle.

Šādu shēmu sagaida pakārtotie rīki, kad tie iespējo ripgrep strukturēto izvadi. Ja vēlaties vienkāršāku formu, izmantojiet `vendor/bin/greph --json`.

## Pārbaudītās funkcijas

Tālāk norādītie karodziņi ir pārbaudīti ar pašu `rg`, un to apraksts pieejams sadaļā [funkciju matrica](https://greph.inline0.dev/lv/docs/advanced/feature-matrix). Sākotnējais binārais fails un iesaiņotājs katrai pārbaudei rada līdzvērtīgu izvadi. Ja karodziņam ir īsā un garā pieraksta forma, pārbaudē tiek izmantota viena no tām, un iesaiņotājs abus pierakstus apstrādā kā vienu un to pašu opciju.

### Meklēšanas karodziņi

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

### Pārlūkošanas karodziņi

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

### Izvades karodziņi

- `--json`

### Pieņemtie karodziņi bez pārbaudes

Iesaiņotājs pieņem arī šos karodziņus, taču tie vēl nav pārbaudīti funkciju matricā:

- `-j N`, `--threads N` (darbplūsmu izpildītāju skaits, skatiet sadaļu [Paralēlie darbplūsmu izpildītāji](https://greph.inline0.dev/lv/docs/advanced/parallel))
- `-q`, `--quiet`
- `--no-follow`

## Ierobežojumi

Greph `rg` iesaiņotājs nodrošina meklēšanas un pārlūkošanas funkcijas, ko izmanto vairums rīku un aģentu. Pašlaik tas neatbalsta šādas ripgrep funkcijas:

- Vairāku rindu regex (`-U`, `--multiline`)
- Aizstāšana teksta režīmā (`-r`, `--replace`); tās vietā izmantojiet `vendor/bin/greph` AST pārrakstīšanu
- Pielāgotas tipu definīcijas (`--type-add`, `--type-clear`)
- Kodējuma karodziņi (`-E`, `--encoding`)
- `--pre` filtra skripti
- `--sort`, `--sortr`

Ja pietrūkst kāda karodziņa, iesniedziet kļūdas ziņojumu, pievienojot pārbaudi, ko veicāt ar sākotnējo `rg`, un sagaidāmo izvadi. Jaunas funkcijas tiek pievienotas kopā ar to etalonpārbaudēm, tāpēc pārbaudītā funkcionalitāte arvien paplašinās.

## Atbilstība darbībā

Iesaiņotāja mērķis ir darbības atbilstība, nevis identiski baiti. Izvade atbilst pa rindām, taču var atšķirties nebūtiskās detaļās (krāsu kodi, apgriešana atbilstoši termināļa platumam). Pārbaudes sadaļā [funkciju matrica](https://greph.inline0.dev/lv/docs/advanced/feature-matrix) pārbauda semantisko atbilstību, nevis precīzu baitu sakritību.

Rīkiem un aģentiem, kas parsē izvadi, parsēšanai nozīmīgie lauki (faila ceļš, rindas numurs, saturs, atbilstības pozīcija) katrā pārbaudītajā gadījumā baitu līmenī sakrīt ar sākotnējā `rg` izvadi.
