Failipuus liikuja
Iga Greph režiim (tekst, AST, ümberkirjutus, indekseeritud tekst, indekseeritud AST, vahemällu salvestatud AST, rg ümbris, sg ümbris) alustab failipuu läbimisest ja Greph\Walker\FileList koostamisest. Läbija on ühine, seega kehtivad samad lipud ja käitumine kõikjal.
Vaikekäitumine
Vaikimisi teeb läbija järgmist:
- Läbib rekursiivselt kõik kataloogid määratud asukohtade all.
- Järgib igal tasemel
.gitignoreja.grephignorereegleid, sealhulgas pesastatud ülekirjutusi ja eitusreegleid. - Jätab vahele kataloogi
.git. - Jätab vahele peidetud failid ja kataloogid (kõik, mis algab märgiga
.). - Jätab vahele binaarfailid (tuvastatakse faili esimese 512 baidi nullbaitide järgi).
- Jätab vahele failid, mis on suuremad kui 10 MiB.
- Ei järgi sümbollinke.
Ülekirjutuslipud
| Lipp | Mõju |
|---|---|
--no-ignore |
Eirab reegleid .gitignore ja .grephignore |
--hidden |
Kaasab peidetud failid ja kataloogid |
--type NAME |
Kaasab ainult failid, mis vastavad nimetatud tüübialiasele |
--type-not NAME |
Jätab välja failid, mis vastavad nimetatud tüübialiasele |
--glob GLOB |
Kaasab ainult failid, mille tee vastab GLOB-mustrile. Korduskasutatav. |
Sama valikute komplekt on programmipõhiseks kasutuseks saadaval ka Greph\Walker\WalkOptions kaudu.
use Greph\Greph;
use Greph\Walker\FileTypeFilter;
use Greph\Walker\WalkOptions;
$files = Greph::walk('src', new WalkOptions(
respectIgnore: false,
includeHidden: true,
fileTypeFilter: new FileTypeFilter(['php']),
globPatterns: ['src/**/*.php'],
));
Failitüübi aliased
Greph sisaldab väikest valikut nimetatud failitüüpe. Iga alias vastab laiendite loendile:
| Alias | Laiendid |
|---|---|
css |
css, sass, scss |
html |
htm, html, phtml |
js |
cjs, js, mjs |
json |
json |
md |
markdown, md |
php |
inc, php, php3, php4, php5, php7, php8, phpt, phtml |
txt |
txt |
ts |
ts, tsx |
xml |
xml |
yaml |
yaml, yml |
Täieliku loendi leiate failist Greph\Walker\FileTypeFilter::TYPE_MAP.
.gitignore'i semantika
Greph rakendab gitignore'i sobitamist puhtalt PHP-s. Semantika vastab git check-ignore käitumisele:
- Mustreid hinnatakse nende asukohakataloogi suhtes.
- Pesastatud failid
.gitignoretühistavad ülemkataloogi reeglid. - Eitus (
!pattern) kaasab uuesti varem välja jäetud tee. - Lõpus olev
/piirab mustri kataloogidega. - Alguses olev
/seob mustri faili.gitignorekataloogiga. **vastab suvalisele arvule teelõikudele.
.grephignore kasutab sama süntaksit ja lisandub .gitignore peale. See sobib tööriistapõhiste välistuste jaoks, mida te ei soovi versioonihaldusesse lisada.
Teostus asub kataloogis Greph\Walker\GitignoreFilter.
Binaarfailide tuvastamine
Läbija kontrollib iga faili esimeses 512 baidis nullbaitide olemasolu. Kui neid leidub, käsitatakse faili binaarfailina ja jäetakse vahele. Nii leitakse levinud juhtumid, kus hoidla indekseeritud kataloogis leidub pilte, arhiive või kompileeritud faile.
Binaarfailide otsimiseks määrake vastava Options objekti väärtuseks skipBinaryFiles: false. CLI seda lippu praegu ei paku; kasutage fassaadi.
Sümbollingid
Vaikimisi sümbollinke ei järgita. Nende järgimiseks määrake followSymlinks: true või edastage -L / --follow ümbrisele rg. Läbija jälgib külastatud katalooge, et sümbollingid ei põhjustaks lõputut rekursiooni.
Faili maksimaalne suurus
Failid, mis on suuremad kui maxFileSizeBytes (vaikimisi 10 MiB), jäetakse vahele. Nii ei loeta kogemata 1 GB logifaili mällu. Suuremate sisendite katmiseks muutke piirangut objektis Options.
Miks kasutada kohandatud läbijat
Greph võiks kasutada glob() või RecursiveDirectoryIterator, kuid kumbki ei rakenda gitignore'i semantikat, ei tunne .grephignore ega integreeru hästi tööprotsesside kogumiga. Läbija ühekordne kirjutamine ja jagamine eri režiimide vahel tähendab ka seda, et igas režiimis rakenduvad täpselt samad filtreerimisreeglid. See on võrdluspõhise testimise jaoks hädavajalik: ainus viis võrrelda grep, ripgrep ja ast-grep tulemusi on läbida sama failikogum, mida need tööriistad läbivad.