
# CLI

shikiphp obsahuje malý nástroj príkazového riadka v `bin/shikiphp` (v projekte sa nainštaluje ako `vendor/bin/shikiphp`). Má tri príkazy: `highlight` vykreslí jeden súbor do HTML a príkazy `langs` a `themes` vypíšu obsah balíka.

## `highlight`

Zvýrazní súbor do HTML a vypíše ho na štandardný výstup.

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

- `<file>` — cesta k súboru na načítanie. Súbor musí existovať; štandardný vstup sa nenačítava.
- `--lang` — ID jazyka alebo alias. Ak nie je zadaný, ako ID sa bez úprav použije prípona súboru (ak prípona chýba, použije sa `txt`).
- `--theme` — ID témy. Predvolené je `github-dark`.

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

Výstupom je ten istý blok `<pre class="shiki …">` pre jednu tému, ktorý vracia [`codeToHtml`](https://shikiphp.inline0.dev/sk/docs/api#shikiphpcodetohtml), za ktorým nasleduje nový riadok, takže ho možno priamo presmerovať do súboru:

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

Príkaz neprijíma žiadne ďalšie možnosti. Pri použití dvoch tém, transformátorov alebo akejkoľvek inej [možnosti](https://shikiphp.inline0.dev/sk/docs/options) namiesto neho zavolajte PHP API.

### Možnosti a argumenty

Možnosti musia mať tvar `--name=value`. Ostatné argumenty začínajúce na `--` sa ignorujú a za súbor sa považuje posledný argument, ktorý sa nezačína na `--`. Príkaz `--lang php file.rs` preto zvýrazní súbor `file.rs` ako Rust: `--lang` sa ignoruje, `php` nahradí hodnota `file.rs` a jazyk sa určí podľa prípony `.rs`.

### Určenie jazyka

Bez možnosti `--lang` sa prípona bez úprav použije ako ID jazyka. Funguje to vždy, keď je samotná prípona ID alebo alias pribaleného jazyka — `php`, `js`, `ts`, `tsx`, `py`, `rs`, `go`, `md`, `yml`, `json`, `sh` a mnohé ďalšie (pozrite si [Jazyky](https://shikiphp.inline0.dev/sk/docs/languages)). Nefunguje to v týchto prípadoch:

- súbory bez prípony, napríklad `Makefile` alebo `Dockerfile`, pri ktorých sa použije `txt`;
- prípony, ktoré nie sú ID jazyka, napríklad `.txt`.

`txt` nie je pribalený jazyk, preto sa obe situácie momentálne končia chybou `Unknown language "txt"` (fatálnou chybou [#3](https://github.com/inline0/shikiphp/issues/3) so zásobníkom volaní).
Pre tieto súbory zadajte `--lang`:

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

## `langs`

Vypíše všetky ID, ktoré balík prijíma ako jazyk, každé na samostatný riadok.

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

Zoznam má 350 riadkov: najprv sú uvedené 253 ID pribalených gramatík v poradí balíka (nie abecedne) a potom ich 97 aliasov (`js`, `cjs`, `mjs` atď.). ID gramatík zahŕňajú 18 pomocných gramatík, ktoré vkladajú iné gramatiky, napríklad `vue-directives` a `es-tag-css`; katalóg s názvami a aliasmi nájdete v časti [Jazyky](https://shikiphp.inline0.dev/sk/docs/languages). Abecedný zoznam získate pomocou `sort`.

## `themes`

Vypíše všetky ID pribalených tém, každé na samostatný riadok v abecednom poradí (65 tém).

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

Katalóg s názvami a typmi (svetlý/tmavý) nájdete v časti [Témy](https://shikiphp.inline0.dev/sk/docs/themes).

## Pomocník a návratový stav

Ak chcete zobraziť návod na použitie, spustite príkaz bez príkazu alebo so zadaním `-h` / `--help` / `help`.

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

| Situácia | Výstup | Návratový stav |
| --- | --- | --- |
| Úspech alebo pomoc | stdout | `0` |
| Neznámy príkaz | `Unknown command: <name>` na stderr | `1` |
| `highlight` bez súboru alebo neexistujúci súbor | riadok s návodom na použitie na stderr | `1` |
| Neznámy jazyk alebo téma | nezachytená chyba `Shikiphp\Exceptions\Highlight` (fatálna chyba PHP so zásobníkom volaní) | `255` |
