CLI Reference
Greph leveres med fire eksekverbare filer. De bruger alle den samme motor; forskellen ligger i den grænseflade, de stiller til rådighed.
| Eksekverbar fil | Formål |
|---|---|
greph |
Native tekstsøgninger, AST-søgninger og AST-omskrivninger |
greph-index |
Opvarmet tekstindeks, AST-faktaindeks og cachelagret AST-søgning |
rg |
Kompatibilitetswrapper i stil med ripgrep |
sg |
Kompatibilitetswrapper i stil med ast-grep |
Alle stier i eksemplerne bruger ./vendor/bin/<binary>, som fungerer med Greph 0.2.3 eller nyere installeret som afhængighed. Erstat med ./bin/<binary>, hvis du arbejder fra en klon af repositoriet.
greph
Native tekstsøgninger, AST-søgninger og AST-omskrivninger.
greph [options] pattern [path...]
greph -p pattern [options] [path...]
greph -p pattern -r replacement [options] [path...]
Hvis en sti udelades, søges der i den aktuelle mappe.
Teksttilstand
Standardtilstand. Mønstre er PCRE2-regexer, medmindre -F er angivet.
# 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
Outputformatet svarer til grep -rn:
src/Greph.php:31:final class Greph
src/Greph.php:36: public static function walk(...
AST-tilstand
Aktiveres med -p. Mønstre skrives som almindelig PHP med metavariablerne $VAR og $$$VARIADIC. Se Tilstande / AST-søgning for den fulde grammatik for mønstre.
./vendor/bin/greph -p 'new $CLASS()' src
./vendor/bin/greph -p '$obj->$method($$$ARGS)' src
./vendor/bin/greph -p 'function $name($$$PARAMS): void {}' src
Omskrivningstilstand
Aktiveres ved at kombinere -p med -r. Erstatningsskabelonen bruger de samme metavariabler som søgemønstret; registrerede noder indsættes efter navn.
# 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
Indstillinger
| Flag | Betydning |
|---|---|
-F |
Søg efter faste strenge (ingen regex) |
-i |
Match uden forskel på store og små bogstaver |
-w |
Match hele ord |
-v |
Inverter match |
-c |
Tæl match pr. fil |
-l |
Vis kun stier til filer med match |
-L |
Vis kun stier til filer uden match |
-h |
Undertryk filnavnspræfikser i teksttilstand |
-H |
Vis altid filnavnspræfikser i teksttilstand |
-n |
Vis linjenumre (standard: til) |
-A N |
Vis N linjer efter hvert match |
-B N |
Vis N linjer før hvert match |
-C N |
Vis N kontekstlinjer før og efter hvert match |
-m N |
Stop efter N match pr. fil |
-j N |
Brug N parallelle arbejdere |
-p PATTERN |
AST-søgemønster |
-r TEMPLATE |
AST-omskrivningsskabelon (kræver -p) |
--glob GLOB |
Medtag kun filer, hvis stier matcher GLOB |
--type NAME |
Medtag et alias for en filtype (php, js, md, ...) |
--type-not NAME |
Udelad et alias for en filtype |
--lang NAME |
AST-sprog. Standard: php |
--json |
Generér output i JSON-format |
--no-ignore |
Ignorer reglerne for .gitignore og .grephignore |
--hidden |
Medtag skjulte filer |
--dry-run |
Vis omskrivninger uden at skrive til filer |
--interactive |
Bekræft hver omskrevet fil |
--help |
Vis brug direkte i terminalen |
greph-index
Opvarmet tekstindeks, AST-faktaindeks og cachelagret AST-søgning.
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...]
Tekstindeks
# 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
Tekstindekset er et opvarmet lager med trigrammer og identifikatorforekomster. Det ligger som standard i .greph-index/ i den indekserede rodmappe.
Indekssæt
Indekssæt samler gentagne arbejdsgange med flere indeks i et navngivet 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)' .
Standardmanifestfilen er .greph-index-set.json. Hver post peger på en rodmappe, en tilstand og en livscyklusprofil. set build og set refresh arbejder på de aktiverede poster; set search kører på tværs af de valgte poster og fjerner dubletter blandt overlappende match.
AST-faktaindeks
./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
AST-faktaindekset udtrækker fakta på nodeniveau (kald, instansieringer, klasser, metoder) til et søgbart lager. Opslag foretages med O(log n) på faktanøglen og verificeres derefter mod kilden. Lagres som standard i .greph-ast-index/.
AST-cache
./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
AST-cachen gemmer parsede træer på disk, så søgninger springer parseren helt over. Gemmes som standard i .greph-ast-cache/.
Indstillinger
Indstillingerne for tekstsøgning svarer til flagene i greph (-F, -i, -w, -v, -c, -l, -L, -A, -B, -C, -m, --glob, --type, --type-not, --json, --no-ignore, --hidden).
Yderligere flag:
| Flag | Betydning |
|---|---|
--index-dir DIR |
Brug en anden opvarmet indeksmappe end standardmappen. Kan gentages til søgning og statistik med flere indeks. |
--lifecycle PROFILE |
Byggepolitik: static, manual-refresh, opportunistic-refresh, strict-stale-check |
--auto-refresh-max-files N |
Grænse for filer ved opportunistisk opdatering |
--auto-refresh-max-bytes N |
Grænse for byte ved opportunistisk opdatering |
--manifest FILE |
Indlæs et manifest for indekssæt. Standard: .greph-index-set.json |
--mode MODE |
Begræns handlinger på sæt til text, ast-index eller ast-cache |
--index NAME |
Begræns handlinger på sæt til en navngiven manifestpost. Kan gentages. |
--show-index-origin |
Sæt præfiks med navnet på den matchende indeksindtastning foran output fra søgninger med opvarmet indeks eller indekssæt |
--trace-plan |
Send diagnostik fra den opvarmede planlægger til stderr |
--dry-refresh |
I stats: rapportér, hvad en søgning med opvarmet indeks ville gøre, uden at ændre noget |
--lang NAME |
AST-sprog til søgninger med ast-index / ast-cache. Standard: php |
-j N, --jobs N |
Arbejdere til AST-gennemgange |
-l, --files-with-matches |
Vis kun stier til filer med match (AST-tilstand) |
--strict-parse |
Afbryd ved parsefejl i stedet for at springe dem over |
--fallback MODE |
Håndtering af manglende indeks: fail (standard) eller scan |
--help |
Vis brug direkte i terminalen |
rg
Kompatibilitetswrapper i stil med ripgrep. Understøtter de mest almindeligt brugte ripgrep-flag. De verificerede funktioner er offentliggjort i funktionsoversigten.
rg [options] pattern [path...]
rg --files [options] [path...]
Eksempler
./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" .
Understøttede indstillinger
| Flag | Betydning |
|---|---|
-F, --fixed-strings |
Søg efter faste strenge |
-i, --ignore-case |
Søg uden forskel på store og små bogstaver |
-w, --word-regexp |
Søg efter hele ord |
-v, --invert-match |
Inverter match |
-c, --count |
Tæl linjer med match |
-l, --files-with-matches |
Vis filer med match |
--files-without-match |
Vis filer uden match |
-I, --no-filename |
Undertryk filnavnspræfikser |
-H, --with-filename |
Vis altid filnavnspræfikser |
-n, --line-number |
Vis linjenumre |
-A N, --after-context N |
Vis N linjer efter hvert match |
-B N, --before-context N |
Vis N linjer før hvert match |
-C N, --context N |
Vis N linjer før og efter hvert match |
-m N, --max-count N |
Stop efter N match pr. fil |
-j N, --threads N |
Brug N parallelle arbejdere |
-e P, --regexp P |
Søgemønster |
-L, --follow |
Følg symbolske links |
--glob GLOB |
Medtag kun filer, hvis stier matcher GLOB |
--type NAME |
Medtag en filtype |
--type-not NAME |
Udelad en filtype |
--json |
Generér ripgrep-lignende JSON-hændelser |
--no-ignore |
Ignorer reglerne for .gitignore og .grephignore |
--hidden |
Medtag skjulte filer |
--files |
Vis mulige filer i stedet for at søge |
--help |
Vis brug direkte i terminalen |
sg
Kompatibilitetswrapper i stil med ast-grep. Understøtter de mest almindeligt brugte ast-grep-flag. De verificerede funktioner er offentliggjort i funktionsoversigten.
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]
run er den kanoniske kommando for ast-grep. scan og rewrite er aliaser, der kun findes i wrapperen, og som afspejler almindelig brug. Det fungerer også at køre kommandoen uden argumenter (sg --pattern ... .) for at søge én gang.
Eksempler
./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
Understøttede indstillinger
| Flag | Betydning |
|---|---|
-p, --pattern PATTERN |
AST-mønster |
-r, --rewrite TEMPLATE |
Omskrivningsskabelon |
-l, --lang NAME |
AST-sprog. Standard: php |
-j, --threads N |
Brug N parallelle arbejdere |
-i, --interactive |
Bekræft hver omskrivning |
-U, --update-all |
Anvend omskrivninger uden bekræftelse |
--files-with-matches |
Vis kun stier til filer med match |
--json[=STYLE] |
Generér output i JSON-format. STYLE = pretty, stream eller compact |
--no-ignore [MODE] |
Ignorer repositoriets ignoreringsregler |
--hidden |
Medtag skjulte filer |
--glob GLOB, --globs GLOB |
Medtag kun filer, hvis stier matcher GLOB |
--type NAME |
Medtag en filtype |
--type-not NAME |
Udelad en filtype |
--dry-run |
Forhåndsvis omskrivninger uden at skrive til filer |
--help |
Vis brug direkte i terminalen |
Afslutningskoder
Greph følger konventionerne for grep / ripgrep:
| Kode | Betydning |
|---|---|
0 |
Mindst ét match blev fundet (eller mindst én fil blev ændret ved omskrivning) |
1 |
Ingen match fundet |
2 |
Fejl i brug eller under kørsel (forkerte argumenter, manglende indeks, parsefejl i tilstanden --strict-parse) |