Referenca CLI
Greph vključuje štiri izvršne datoteke. Vse uporabljajo isti pogon; razlikujejo se po vmesniku, ki ga ponujajo.
| Binarna datoteka | Namen |
|---|---|
greph |
Izvorno iskanje besedila, iskanje AST in prepisovanje AST |
greph-index |
Vnaprej ogret besedilni indeks, indeks dejstev AST in predpomnjeno iskanje AST |
rg |
Ovojnica za združljivost v slogu ripgrep |
sg |
Ovojnica za združljivost v slogu ast-grep |
Vse poti v primerih uporabljajo ./vendor/bin/<binary>, ki deluje z Greph 0.2.3 ali novejšim, nameščenim kot odvisnost. Če delate s klonom repozitorija, zamenjajte z ./bin/<binary>.
greph
Izvorno iskanje besedila, iskanje AST in prepisovanje AST.
greph [options] pattern [path...]
greph -p pattern [options] [path...]
greph -p pattern -r replacement [options] [path...]
Če pot izpustite, se preišče trenutni imenik.
Besedilni način
Privzeti način. Vzorci so regularni izrazi PCRE2, razen če je nastavljen -F.
# 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
Izhodna oblika se ujema z grep -rn:
src/Greph.php:31:final class Greph
src/Greph.php:36: public static function walk(...
Način AST
Aktivira se z -p. Vzorci so zapisani kot običajna PHP z metavariablami $VAR in $$$VARIADIC. Celotno slovnico vzorcev najdete v Načini / Iskanje AST.
./vendor/bin/greph -p 'new $CLASS()' src
./vendor/bin/greph -p '$obj->$method($$$ARGS)' src
./vendor/bin/greph -p 'function $name($$$PARAMS): void {}' src
Način prepisovanja
Aktivira se s kombinacijo -p in -r. Predloga za zamenjavo uporablja iste metavariable kot iskalni vzorec; zajeta vozlišča se vstavijo po imenu.
# 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
Možnosti
| Zastavica | Pomen |
|---|---|
-F |
Iskanje nespremenljivega niza (brez regularnih izrazov) |
-i |
Iskanje brez razlikovanja med velikimi in malimi črkami |
-w |
Iskanje celih besed |
-v |
Obrni ujemanje |
-c |
Preštej ujemanja v posamezni datoteki |
-l |
Izpiši samo poti do datotek z ujemanji |
-L |
Izpiši samo poti do datotek brez ujemanj |
-h |
V besedilnem načinu skrij predpone imen datotek |
-H |
V besedilnem načinu vedno izpiši predpone imen datotek |
-n |
Prikaži številke vrstic (privzeto: vklopljeno) |
-A N |
Prikaži N vrstic za vsakim ujemanjem |
-B N |
Prikaži N vrstic pred vsakim ujemanjem |
-C N |
Prikaži N kontekstnih vrstic pred vsakim ujemanjem in za njim |
-m N |
Ustavi po N ujemanjih v posamezni datoteki |
-j N |
Uporabi N vzporednih delavcev |
-p PATTERN |
Iskalni vzorec AST |
-r TEMPLATE |
Predloga za prepis AST (zahteva -p) |
--glob GLOB |
Vključi samo datoteke, katerih poti se ujemajo z GLOB |
--type NAME |
Vključi vzdevek vrste datotek (php, js, md, ...) |
--type-not NAME |
Izključi vzdevek vrste datotek |
--lang NAME |
Jezik AST. Privzeto: php |
--json |
Izpiši izhod JSON |
--no-ignore |
Prezri pravili .gitignore in .grephignore |
--hidden |
Vključi skrite datoteke |
--dry-run |
Izpiši prepise, ne da bi zapisali spremembe v datoteke |
--interactive |
Potrdi vsak prepis datoteke |
--help |
Prikaži kratka navodila za uporabo |
greph-index
Vnaprej ogret besedilni indeks, indeks dejstev AST in predpomnjeno iskanje AST.
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...]
Besedilni indeks
# 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
Besedilni indeks je vnaprej ogreta shramba trigramskih in identifikatorskih objav. Privzeto je shranjen v .greph-index/ v indeksiranem korenu.
Nabori indeksov
Nabori indeksov ponavljajoče se poteke dela z več indeksi združijo v imenovani manifest:
./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)' .
Privzeta datoteka manifesta je .greph-index-set.json. Vsak vnos kaže na koren, način in profil življenjskega cikla. set build in set refresh delujeta na omogočenih vnosih; set search se izvede v izbranih vnosih in odstrani podvojena prekrivajoča se ujemanja.
Indeks dejstev AST
./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
Indeks dejstev AST izlušči dejstva na ravni vozlišč (klice, instanciacije, razrede, metode) v shrambo, ki jo je mogoče poizvedovati. Iskanja po ključu dejstva so O(log n), nato se preverijo glede na izvorno kodo. Privzeto so shranjena v .greph-ast-index/.
Predpomnilnik AST
./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
Predpomnilnik AST shranjuje razčlenjena drevesa na disk, zato iskanja v celoti preskočijo razčlenjevalnik. Privzeto je shranjen v .greph-ast-cache/.
Možnosti
Možnosti iskanja besedila ustrezajo naboru zastavic greph (-F, -i, -w, -v, -c, -l, -L, -A, -B, -C, -m, --glob, --type, --type-not, --json, --no-ignore, --hidden).
Dodatne zastavice:
| Zastavica | Pomen |
|---|---|
--index-dir DIR |
Uporabi drug imenik vnaprej ogretega indeksa. Ponovljivo za iskanje in statistiko z več indeksi. |
--lifecycle PROFILE |
Pravilnik gradnje: static, manual-refresh, opportunistic-refresh, strict-stale-check |
--auto-refresh-max-files N |
Prag datotek za priložnostno osvežitev |
--auto-refresh-max-bytes N |
Prag bajtov za priložnostno osvežitev |
--manifest FILE |
Naloži manifest nabora indeksov. Privzeto: .greph-index-set.json |
--mode MODE |
Omeji operacije nad naborom na text, ast-index ali ast-cache |
--index NAME |
Omeji operacije nad naborom na imenovani vnos manifesta. Ponovljivo. |
--show-index-origin |
Pred izhodom iskanja ali nabora vnaprej ogretih več indeksov dodaj ime ustreznega vnosa indeksa |
--trace-plan |
Izpiši diagnostiko vnaprej ogretega načrtovalnika v stderr |
--dry-refresh |
V stats sporoči, kaj bi naredilo vnaprej ogreto iskanje, ne da bi karkoli spremenilo |
--lang NAME |
Jezik AST za iskanja ast-index / ast-cache. Privzeto: php |
-j N, --jobs N |
Delavci za pregledovanje AST |
-l, --files-with-matches |
Izpiši samo poti do datotek z ujemanji (način AST) |
--strict-parse |
Ob napakah pri razčlenjevanju prenehaj, namesto da preskočiš datoteke |
--fallback MODE |
Ravnanje ob manjkajočem indeksu: fail (privzeto) ali scan |
--help |
Prikaži kratka navodila za uporabo |
rg
Ovojnica za združljivost v slogu ripgrep. Podpira najpogosteje uporabljene zastavice ripgrep. Preverjeni nabor je objavljen v matriki funkcij.
rg [options] pattern [path...]
rg --files [options] [path...]
Primeri
./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" .
Podprte možnosti
| Zastavica | Pomen |
|---|---|
-F, --fixed-strings |
Iskanje nespremenljivega niza |
-i, --ignore-case |
Iskanje brez razlikovanja med velikimi in malimi črkami |
-w, --word-regexp |
Iskanje celih besed |
-v, --invert-match |
Obrni ujemanja |
-c, --count |
Preštej vrstice z ujemanji |
-l, --files-with-matches |
Izpiši datoteke z ujemanji |
--files-without-match |
Izpiši datoteke brez ujemanj |
-I, --no-filename |
Skrij predpone imen datotek |
-H, --with-filename |
Vedno izpiši predpone imen datotek |
-n, --line-number |
Prikaži številke vrstic |
-A N, --after-context N |
Prikaži N vrstic za vsakim ujemanjem |
-B N, --before-context N |
Prikaži N vrstic pred vsakim ujemanjem |
-C N, --context N |
Prikaži N vrstic pred vsakim ujemanjem in za njim |
-m N, --max-count N |
Ustavi po N ujemanjih v posamezni datoteki |
-j N, --threads N |
Uporabi N vzporednih delavcev |
-e P, --regexp P |
Iskalni vzorec |
-L, --follow |
Sledi simbolnim povezavam |
--glob GLOB |
Vključi samo datoteke, katerih poti se ujemajo z GLOB |
--type NAME |
Vključi vrsto datoteke |
--type-not NAME |
Izključi vrsto datoteke |
--json |
Izpiši dogodke ripgrep v slogu JSON |
--no-ignore |
Prezri pravili .gitignore in .grephignore |
--hidden |
Vključi skrite datoteke |
--files |
Izpiši seznam datotek kandidatov, namesto da jih preiščeš |
--help |
Prikaži kratka navodila za uporabo |
sg
Ovojnica za združljivost v slogu ast-grep. Podpira najpogosteje uporabljene zastavice ast-grep. Preverjeni nabor je objavljen v matriki funkcij.
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]
run je kanonični glagol ast-grep. scan in rewrite sta vzdevka, namenjena samo ovojnici, ki odražata običajno rabo. Deluje tudi samostojen klic (sg --pattern ... .) za enkratno iskanje.
Primeri
./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
Podprte možnosti
| Zastavica | Pomen |
|---|---|
-p, --pattern PATTERN |
Vzorec AST |
-r, --rewrite TEMPLATE |
Predloga za prepisovanje |
-l, --lang NAME |
Jezik AST. Privzeto: php |
-j, --threads N |
Uporabi N vzporednih delavcev |
-i, --interactive |
Potrdi vsak prepis |
-U, --update-all |
Uporabi prepise brez potrditve |
--files-with-matches |
Izpiši samo poti do datotek z ujemanji |
--json[=STYLE] |
Izpiši izhod JSON. SLOG = pretty, stream ali compact |
--no-ignore [MODE] |
Prezri pravila za izključitev v repozitoriju |
--hidden |
Vključi skrite datoteke |
--glob GLOB, --globs GLOB |
Vključi samo datoteke, katerih poti se ujemajo z GLOB |
--type NAME |
Vključi vrsto datoteke |
--type-not NAME |
Izključi vrsto datoteke |
--dry-run |
Predoglej prepise, ne da bi zapisali spremembe v datoteke |
--help |
Prikaži kratka navodila za uporabo |
Izhodne kode
Greph sledi konvencijam programov grep / ripgrep:
| Koda | Pomen |
|---|---|
0 |
Najdeno je bilo vsaj eno ujemanje (ali pa se je pri prepisovanju spremenila vsaj ena datoteka) |
1 |
Ni bilo najdenih ujemanj |
2 |
Napaka pri uporabi ali med izvajanjem (neveljavni argumenti, manjkajoči indeks, napaka pri razčlenjevanju v načinu --strict-parse) |