
# CLI

shikiphp pateikia nedidelį komandų eilutės įrankį adresu `bin/shikiphp` (jūsų projekte jis įdiegiamas kaip `vendor/bin/shikiphp`). Jame yra trys komandos: `highlight` atvaizduoja vieną failą į HTML, o `langs` ir `themes` išvardija paketo turinį.

## `highlight`

Paryškina failą į HTML ir išveda rezultatą į stdout.

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

- `<file>` — skaitomo failo kelias. Toks failas turi būti; standartinė įvestis neskaitoma.
- `--lang` — kalbos ID arba slapyvardis. Jei nenurodyta, failo plėtinys naudojamas kaip ID nepakeistas (jei plėtinio nėra, naudojama `txt`).
- `--theme` — temos ID. Numatytoji reikšmė yra `github-dark`.

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

Išvestis yra tas pats vienos temos `<pre class="shiki …">` blokas, kurį grąžina [`codeToHtml`](https://shikiphp.inline0.dev/lt/docs/api#shikiphpcodetohtml); po jo pridedama naujos eilutės žymė, todėl išvestį galima nukreipti tiesiai į failą:

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

Komanda neturi kitų parinkčių. Jei reikia dviejų temų, transformatorių ar bet kurios kitos [parinkties](https://shikiphp.inline0.dev/lt/docs/options), naudokite PHP API.

### Parinktys ir argumentai

Parinktys turi būti `--name=value` formato. Bet kuris kitas argumentas, prasidedantis `--`, ignoruojamas, o failu laikomas paskutinis argumentas, kuris neprasideda `--`. Todėl `--lang php file.rs` paryškina `file.rs` kaip Rust: `--lang` ignoruojamas, `php` pakeičiamas į `file.rs`, o kalba nustatoma pagal plėtinį `.rs`.

### Kalbos nustatymas

Nenurodžius `--lang`, plėtinys nepakeistas tampa kalbos ID. Tai veikia, jei pats plėtinys yra į paketą įtrauktas ID arba slapyvardis — `php`, `js`, `ts`, `tsx`, `py`, `rs`, `go`, `md`, `yml`, `json`, `sh` ir daug kitų (žr. [Kalbos](https://shikiphp.inline0.dev/lt/docs/languages)). Tai netinka šiais atvejais:

- failai be plėtinio, pavyzdžiui, `Makefile` arba `Dockerfile`; tokiems naudojama `txt`;
- plėtiniai, kurie nėra kalbos ID, pavyzdžiui, `.txt`.

`txt` nėra į paketą įtraukta kalba, todėl abiem atvejais šiuo metu įvyksta `Unknown language "txt"` klaida ([#3](https://github.com/inline0/shikiphp/issues/3)).
Tokiems failams perduokite `--lang`:

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

## `langs`

Išveda kiekvieną ID, kurį paketas priima kaip kalbą, po vieną eilutėje.

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

Sąraše yra 350 eilučių: 253 įtraukti gramatikų ID pateikiami paketo tvarka (ne abėcėlės tvarka), o po jų — 97 slapyvardžiai (`js`, `cjs`, `mjs` ir t. t.). Gramatikų ID sąraše yra 18 pagalbinių gramatikų, kurias įterpia kitos gramatikos, pavyzdžiui, `vue-directives` ir `es-tag-css`. Gramatikų katalogą su pavadinimais ir slapyvardžiais rasite puslapyje [Kalbos](https://shikiphp.inline0.dev/lt/docs/languages). Norėdami gauti abėcėlinį sąrašą, nukreipkite išvestį per `sort`.

## `themes`

Išveda kiekvienos įtrauktos temos ID po vieną eilutėje, abėcėlės tvarka (65 temos).

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

Temų katalogą su pavadinimais ir šviesiųjų bei tamsiųjų temų tipais rasite puslapyje [Temos](https://shikiphp.inline0.dev/lt/docs/themes).

## Pagalba ir išėjimo kodas

Paleiskite be komandos arba su `-h` / `--help` / `help`, kad būtų parodytos naudojimo instrukcijos.

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

| Atvejis | Išvestis | Išėjimo kodas |
| --- | --- | --- |
| Sėkmė arba pagalba | stdout | `0` |
| Nežinoma komanda | `Unknown command: <name>` stderr | `1` |
| `highlight` nenurodytas failas arba jo nėra | naudojimo instrukcijos eilutė stderr | `1` |
| Nežinoma kalba arba tema | neužfiksuota `Shikiphp\Exceptions\Highlight` (PHP kritinė klaida su dėklo pėdsaku) | `255` |
