
# CLI referencia

A Greph négy végrehajtható fájlt tartalmaz. Mind a négy ugyanazt a motort használja; a különbség az általuk elérhető felületben van.

| Bináris fájl | Rendeltetés |
|---|---|
| `greph` | Natív szövegkeresés, AST-keresés és AST-átírás |
| `greph-index` | Bemelegített szövegindex, AST-tényindex és gyorsítótárazott AST-keresés |
| `rg` | ripgrep-stílusú kompatibilitási burkoló |
| `sg` | ast-grep-stílusú kompatibilitási burkoló |

A példákban szereplő összes útvonal a `./vendor/bin/<binary>` fájlt használja, amely a függőségként telepített Greph 0.2.3 verzióval vagy újabbal működik. Ha a tároló klónjából dolgozik, cserélje le erre: `./bin/<binary>`.

---

## `greph`

Natív szövegkeresés, AST-keresés és AST-átírás.

```bash
greph [options] pattern [path...]
greph -p pattern [options] [path...]
greph -p pattern -r replacement [options] [path...]
```

Ha nincs megadva útvonal, a keresés az aktuális könyvtárban történik.

### Szöveges mód

Alapértelmezett mód. A minták PCRE2 reguláris kifejezések, kivéve ha be van állítva a `-F`.

```bash
# Regex search
./vendor/bin/greph "function\s+\w+" src

# Fixed-string search
./vendor/bin/greph -F "function" src

# Case-insensitive whole-word with two lines of context
./vendor/bin/greph -F -i -w -C 2 "function" src
```

A kimeneti formátum megegyezik a `grep -rn` formátumával:

```text
src/Greph.php:31:final class Greph
src/Greph.php:36:    public static function walk(...
```

### AST-mód

A `-p` aktiválja. A minták közönséges PHP formában íródnak, `$VAR` és `$$$VARIADIC` met változókkal. A teljes mintanyelvtant lásd a [Módok / AST-keresés](https://greph.inline0.dev/hu/docs/modes/ast) oldalon.

```bash
./vendor/bin/greph -p 'new $CLASS()' src
./vendor/bin/greph -p '$obj->$method($$$ARGS)' src
./vendor/bin/greph -p 'function $name($$$PARAMS): void {}' src
```

### Átírási mód

A `-p` és `-r` együttes használata aktiválja. A helyettesítési sablon ugyanazokat a met változókat használja, mint a keresési minta; a rögzített csomópontok név alapján kerülnek beillesztésre.

```bash
# Preview only
./vendor/bin/greph -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --dry-run src

# Apply
./vendor/bin/greph -p 'array($$$ITEMS)' -r '[$$$ITEMS]' src

# Confirm each file before writing
./vendor/bin/greph -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --interactive src
```

### Beállítások

| Jelző | Jelentés |
|---|---|
| `-F` | Rögzített karakterlánc keresése (reguláris kifejezés nélkül) |
| `-i` | Kis- és nagybetűket figyelmen kívül hagyó egyezés |
| `-w` | Teljes szavas egyezés |
| `-v` | Egyezés megfordítása |
| `-c` | Egyezések száma fájlonként |
| `-l` | Csak az egyező fájlok útvonalának listázása |
| `-L` | Csak a nem egyező fájlok útvonalának listázása |
| `-h` | Fájlnév-előtagok elrejtése szöveges módban |
| `-H` | Fájlnév-előtagok mindig jelenjenek meg szöveges módban |
| `-n` | Sorszámok megjelenítése (alapértelmezés: be) |
| `-A N` | N sor megjelenítése az egyes egyezések után |
| `-B N` | N sor megjelenítése az egyes egyezések előtt |
| `-C N` | N sornyi környezet megjelenítése az egyes egyezések előtt és után |
| `-m N` | Leállás fájlonként N egyezés után |
| `-j N` | N párhuzamos munkás használata |
| `-p PATTERN` | AST-keresési minta |
| `-r TEMPLATE` | AST-átírási sablon (`-p` szükséges hozzá) |
| `--glob GLOB` | Csak a GLOB-nak megfelelő útvonalú fájlok bevonása |
| `--type NAME` | Fájltípus-alias bevonása (`php`, `js`, `md`, ...) |
| `--type-not NAME` | Fájltípus-alias kizárása |
| `--lang NAME` | AST-nyelv. Alapértelmezés: `php` |
| `--json` | JSON kimenet kibocsátása |
| `--no-ignore` | A `.gitignore` és `.grephignore` szabályok figyelmen kívül hagyása |
| `--hidden` | Rejtett fájlok bevonása |
| `--dry-run` | Átírások megjelenítése fájlírás nélkül |
| `--interactive` | Minden átírt fájl megerősítése |
| `--help` | Beágyazott súgó megjelenítése |

---

## `greph-index`

Bemelegített szövegindex, AST-tényindex és gyorsítótárazott AST-keresés.

```bash
greph-index build [path] [--index-dir DIR]
greph-index refresh [path] [--index-dir DIR]
greph-index search [options] pattern [path...]

greph-index set build [manifest] [--manifest FILE] [--mode MODE] [--index NAME...]
greph-index set refresh [manifest] [--manifest FILE] [--mode MODE] [--index NAME...]
greph-index set stats [manifest] [--manifest FILE] [--mode MODE] [--index NAME...] [--dry-refresh]
greph-index set search [options] pattern [path...]

greph-index ast-index build [path] [--index-dir DIR]
greph-index ast-index refresh [path] [--index-dir DIR]
greph-index ast-index search [options] pattern [path...]

greph-index ast-cache build [path] [--index-dir DIR]
greph-index ast-cache refresh [path] [--index-dir DIR]
greph-index ast-cache search [options] pattern [path...]
```

### Szövegindex

```bash
# Build (full)
./vendor/bin/greph-index build .

# Build with lifecycle policy
./vendor/bin/greph-index build . \
  --lifecycle opportunistic-refresh \
  --auto-refresh-max-files 32 \
  --auto-refresh-max-bytes 1048576

# Refresh (incremental: added, updated, deleted, unchanged)
./vendor/bin/greph-index refresh .

# Query
./vendor/bin/greph-index search -F "function" .
./vendor/bin/greph-index search -i -w "function" .
./vendor/bin/greph-index search -c "function" .
./vendor/bin/greph-index search --trace-plan -F "function" .
./vendor/bin/greph-index search -F "function" . \
  --index-dir core/.greph-index \
  --index-dir plugins/demo/.greph-index \
  --show-index-origin
```

A szövegindex egy bemelegített trigram- és azonosító-előfordulásokat tároló adatbázis. Alapértelmezés szerint az indexelt gyökérben, itt található: `.greph-index/`.

### Indexkészletek

Az indexkészletek névvel ellátott jegyzékbe foglalják az ismétlődő, több indexet érintő munkafolyamatokat:

```bash
./vendor/bin/greph-index set build
./vendor/bin/greph-index set stats --dry-refresh
./vendor/bin/greph-index set search --show-index-origin -F "function" .
./vendor/bin/greph-index set search --mode ast-index 'new $CLASS()' .
./vendor/bin/greph-index set search --mode ast-cache 'array($$$ITEMS)' .
```

Az alapértelmezett jegyzékfájl: `.greph-index-set.json`. Minden bejegyzés egy gyökérre, egy módra és egy életciklus-profilra mutat. A `set build` és a `set refresh` a bekapcsolt bejegyzéseken működik; a `set search` végigkeresi a kiválasztott bejegyzéseket, és eltávolítja az átfedő egyezéseket.

### AST-tényindex

```bash
./vendor/bin/greph-index ast-index build .
./vendor/bin/greph-index ast-index refresh .
./vendor/bin/greph-index ast-index search 'new $CLASS()' src
./vendor/bin/greph-index ast-index search --trace-plan 'new $CLASS()' src
./vendor/bin/greph-index ast-index search 'new $CLASS()' . \
  --index-dir core/.greph-ast-index \
  --index-dir plugins/demo/.greph-ast-index \
  --show-index-origin
```

Az AST-tényindex csomópontszintű tényeket (hívásokat, példányosításokat, osztályokat és metódusokat) emel ki, és lekérdezhető adatbázisba rendezi. A keresés a tény kulcsa alapján O(log n), majd a forrás ellenőrzésével folytatódik. Alapértelmezés szerint itt tárolódik: `.greph-ast-index/`.

### AST-gyorsítótár

```bash
./vendor/bin/greph-index ast-cache build .
./vendor/bin/greph-index ast-cache refresh .
./vendor/bin/greph-index ast-cache search 'array($$$ITEMS)' src
./vendor/bin/greph-index ast-cache search --trace-plan 'array($$$ITEMS)' src
```

Az AST-gyorsítótár lemezen tárolja az elemzett fákat, így kereséskor nincs szükség a parser futtatására. Alapértelmezés szerint itt tárolódik: `.greph-ast-cache/`.

### Beállítások

A szövegkeresési beállítások megegyeznek a `greph` jelzőkészlettel (`-F`, `-i`, `-w`, `-v`, `-c`, `-l`, `-L`, `-A`, `-B`, `-C`, `-m`, `--glob`, `--type`, `--type-not`, `--json`, `--no-ignore`, `--hidden`).

További jelzők:

| Jelző | Jelentés |
|---|---|
| `--index-dir DIR` | Nem alapértelmezett bemelegített indexkönyvtár használata. Több indexet érintő keresésnél és statisztikáknál ismételhető. |
| `--lifecycle PROFILE` | Építési szabályzat: `static`, `manual-refresh`, `opportunistic-refresh`, `strict-stale-check` |
| `--auto-refresh-max-files N` | Alkalmi frissítés fájlküszöbe |
| `--auto-refresh-max-bytes N` | Alkalmi frissítés bájtküszöbe |
| `--manifest FILE` | Indexkészlet-jegyzék betöltése. Alapértelmezés: `.greph-index-set.json` |
| `--mode MODE` | A készletműveletek korlátozása erre: `text`, `ast-index` vagy `ast-cache` |
| `--index NAME` | A készletműveletek korlátozása egy megnevezett jegyzékbejegyzésre. Ismételhető. |
| `--show-index-origin` | A bemelegített, több indexet érintő vagy készletkimenet elé az egyező indexbejegyzés nevének írása |
| `--trace-plan` | A bemelegített tervező diagnosztikájának kibocsátása ide: `stderr` |
| `--dry-refresh` | A `stats` esetén annak jelzése, hogy mit tenne egy bemelegített keresés, bármilyen módosítás nélkül |
| `--lang NAME` | AST-nyelv `ast-index` / `ast-cache` kereséshez. Alapértelmezés: `php` |
| `-j N`, `--jobs N` | Munkások AST-vizsgálathoz |
| `-l`, `--files-with-matches` | Csak az egyező fájlok útvonalának listázása (AST-mód) |
| `--strict-parse` | Kihagyás helyett leállás elemzési hibánál |
| `--fallback MODE` | Hiányzó index kezelése: `fail` (alapértelmezett) vagy `scan` |
| `--help` | Beágyazott súgó megjelenítése |

---

## `rg`

ripgrep-stílusú kompatibilitási burkoló. A leggyakrabban használt ripgrep jelzőket támogatja. Az ellenőrzött felület az [funkciómátrix](https://greph.inline0.dev/hu/docs/advanced/feature-matrix) oldalon található.

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

### Példák

```bash
./vendor/bin/rg -F "function" src
./vendor/bin/rg --json -F "function" src
./vendor/bin/rg --files src
./vendor/bin/rg --files --type php .
./vendor/bin/rg --type-not js -F "function" .
```

### Támogatott beállítások

| Jelző | Jelentés |
|---|---|
| `-F`, `--fixed-strings` | Rögzített karakterlánc keresése |
| `-i`, `--ignore-case` | Kis- és nagybetűket figyelmen kívül hagyó keresés |
| `-w`, `--word-regexp` | Teljes szavas keresés |
| `-v`, `--invert-match` | Egyezések megfordítása |
| `-c`, `--count` | Egyező sorok számlálása |
| `-l`, `--files-with-matches` | Egyező fájlok listázása |
| `--files-without-match` | Nem egyező fájlok listázása |
| `-I`, `--no-filename` | Fájlnév-előtagok elrejtése |
| `-H`, `--with-filename` | Fájlnév-előtagok mindig jelenjenek meg |
| `-n`, `--line-number` | Sorszámok megjelenítése |
| `-A N`, `--after-context N` | N sor megjelenítése az egyes egyezések után |
| `-B N`, `--before-context N` | N sor megjelenítése az egyes egyezések előtt |
| `-C N`, `--context N` | N sor megjelenítése az egyes egyezések előtt és után |
| `-m N`, `--max-count N` | Leállás fájlonként N egyezés után |
| `-j N`, `--threads N` | N párhuzamos munkás használata |
| `-e P`, `--regexp P` | Keresési minta |
| `-L`, `--follow` | Szimbolikus hivatkozások követése |
| `--glob GLOB` | Csak a GLOB-nak megfelelő útvonalú fájlok bevonása |
| `--type NAME` | Fájltípus bevonása |
| `--type-not NAME` | Fájltípus kizárása |
| `--json` | ripgrep-stílusú JSON események kibocsátása |
| `--no-ignore` | A `.gitignore` és `.grephignore` szabályok figyelmen kívül hagyása |
| `--hidden` | Rejtett fájlok bevonása |
| `--files` | Keresés helyett a lehetséges fájlok listázása |
| `--help` | Beágyazott súgó megjelenítése |

---

## `sg`

ast-grep-stílusú kompatibilitási burkoló. A leggyakrabban használt ast-grep jelzőket támogatja. Az ellenőrzött felület az [funkciómátrix](https://greph.inline0.dev/hu/docs/advanced/feature-matrix) oldalon található.

```bash
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]
```

A `run` a kanonikus ast-grep ige. A `scan` és a `rewrite` csak a burkolóban elérhető aliasok, amelyek a szokásos használatot követik. Az argumentum nélküli meghívás (`sg --pattern ... .`) egyszeri keresésként is működik.

### Példák

```bash
./vendor/bin/sg run --pattern 'array($$$ITEMS)' src/App.php
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' src/App.php
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' --update-all src/App.php
./vendor/bin/sg run --json --pattern 'dispatch($EVENT)' src/App.php
./vendor/bin/sg scan -p 'array($$$ITEMS)' src/App.php
./vendor/bin/sg rewrite -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --dry-run src/App.php
```

### Támogatott beállítások

| Jelző | Jelentés |
|---|---|
| `-p`, `--pattern PATTERN` | AST-minta |
| `-r`, `--rewrite TEMPLATE` | Átírási sablon |
| `-l`, `--lang NAME` | AST-nyelv. Alapértelmezés: `php` |
| `-j`, `--threads N` | N párhuzamos munkás használata |
| `-i`, `--interactive` | Minden átírás megerősítése |
| `-U`, `--update-all` | Átírások alkalmazása megerősítés nélkül |
| `--files-with-matches` | Csak az egyező fájlok útvonalának kiírása |
| `--json[=STYLE]` | JSON kimenet kibocsátása. A STYLE értéke `pretty`, `stream` vagy `compact` |
| `--no-ignore [MODE]` | A tároló figyelmen kívül hagyási szabályainak mellőzése |
| `--hidden` | Rejtett fájlok bevonása |
| `--glob GLOB`, `--globs GLOB` | Csak a GLOB-nak megfelelő útvonalú fájlok bevonása |
| `--type NAME` | Fájltípus bevonása |
| `--type-not NAME` | Fájltípus kizárása |
| `--dry-run` | Átírások előnézete fájlírás nélkül |
| `--help` | Beágyazott súgó megjelenítése |

---

## Kilépési kódok

A Greph a grep / ripgrep konvencióit követi:

| Kód | Jelentés |
|---|---|
| `0` | Legalább egy egyezés található (átírásnál legalább egy fájl módosult) |
| `1` | Nem található egyezés |
| `2` | Használati hiba vagy futásidejű hiba (hibás argumentumok, hiányzó index, elemzési hiba `--strict-parse` módban) |
