
# CLI

shikiphp, `bin/shikiphp` konumunda küçük bir komut satırı aracı sunar (projenize `vendor/bin/shikiphp` olarak kurulur). Üç komutu vardır: `highlight` bir dosyayı HTML biçiminde işler; `langs` ve `themes` paketin içeriğini listeler.

## `highlight`

Bir dosyayı HTML için vurgulayın; çıktı stdout'a yazdırılır.

```bash
vendor/bin/shikiphp highlight <file> [--lang=<lang>] [--theme=<theme>]
```

- `<file>` — okunacak yol. Mevcut bir dosya olmalıdır; standart girdi okunmaz.
- `--lang` — dil kimliği veya takma adı. Belirtilmezse dosya uzantısı olduğu gibi kimlik olarak kullanılır (yoksa `txt` değerine dönülür).
- `--theme` — tema kimliği. Varsayılanı `github-dark`.

```bash
vendor/bin/shikiphp highlight src/App.php --lang=php --theme=nord
```

Çıktı, [`codeToHtml`](https://shikiphp.inline0.dev/tr/docs/api#shikiphpcodetohtml) tarafından döndürülen tek temalı `<pre class="shiki …">` bloğuyla aynıdır; sonuna satır sonu eklenir, böylece doğrudan bir dosyaya yönlendirilebilir:

```bash
vendor/bin/shikiphp highlight src/App.php --theme=github-light > app.html
```

Komut başka seçenek almaz. Çift temalar, dönüştürücüler veya başka bir [seçeneği](https://shikiphp.inline0.dev/tr/docs/options) için bunun yerine PHP API işlevini çağırın.

### Seçenekler ve bağımsız değişkenler

Seçenekler `--name=value` biçimini kullanmalıdır. `--` ile başlayan diğer bağımsız değişkenler yok sayılır; `--` ile başlamayan son bağımsız değişken dosya olarak alınır. Bu nedenle `--lang php file.rs`, `file.rs` değerini Rust olarak vurgular: `--lang` yok sayılır, `php` yerine `file.rs` kullanılır ve dil, `.rs` uzantısından belirlenir.

### Dil çıkarımı

`--lang` yoksa uzantı, değiştirilmeden dil kimliği olur. Uzantının kendisi paketteki bir kimlik veya takma ad olduğunda işe yarar: `php`, `js`, `ts`, `tsx`, `py`, `rs`, `go`, `md`, `yml`, `json`, `sh` ve daha fazlası (adlar ve takma adlar kataloğu için [Diller](https://shikiphp.inline0.dev/tr/docs/languages) bölümüne bakın). Şunlarda işe yaramaz:

- `Makefile` veya `Dockerfile` gibi uzantısı olmayan dosyalarda; bu durumda `txt` değerine dönülür;
- Dil kimliği olmayan `.txt` gibi uzantılarda.

`txt` paketteki bir dil değildir; bu nedenle her iki durum da şu anda `Unknown language "txt"` hatasıyla sonuçlanır ([#3](https://github.com/inline0/shikiphp/issues/3)).
Bu dosyalar için `--lang` değerini geçin:

```bash
vendor/bin/shikiphp highlight Dockerfile --lang=docker
vendor/bin/shikiphp highlight Makefile --lang=make
```

## `langs`

Paketin dil olarak kabul ettiği her kimliği satır başına bir tane olacak şekilde yazdırır.

```bash
vendor/bin/shikiphp langs
```

Listede 350 satır vardır: paket sırasına göre (alfabetik değil) 253 dilbilgisi kimliği, ardından 97 takma adı (`js`, `cjs`, `mjs` vb.). Dilbilgisi kimlikleri, diğer dilbilgilerinin içine eklenen `vue-directives` ve `es-tag-css` gibi 18 yardımcı dilbilgisini de içerir; adların ve takma adların bulunduğu katalog için [Diller](https://shikiphp.inline0.dev/tr/docs/languages) bölümüne bakın. Listeyi alfabetik sıralamak için `sort` komutuna aktarın.

## `themes`

Paketteki tüm tema kimliklerini, satır başına bir tane ve alfabetik sırayla yazdırır (65 tema).

```bash
vendor/bin/shikiphp themes
```

Adların ve açık/koyu türlerinin yer aldığı katalog için [Temalar](https://shikiphp.inline0.dev/tr/docs/themes) bölümüne bakın.

## Yardım ve çıkış durumu

Kullanım bilgisini yazdırmak için komut olmadan veya `-h` / `--help` / `help` ile çalıştırın.

```bash
vendor/bin/shikiphp --help
```

| Durum | Çıktı | Çıkış durumu |
| --- | --- | --- |
| Başarılı veya yardım | stdout | `0` |
| Bilinmeyen komut | stderr üzerinde `Unknown command: <name>` | `1` |
| Dosya olmadan `highlight` veya dosyanın mevcut olmaması | stderr üzerinde kullanım satırı | `1` |
| Bilinmeyen dil veya tema | yakalanmamış `Shikiphp\Exceptions\Highlight` (yığın izlemeli PHP kritik hata) | `255` |
