
# CLI

shikiphp ietver nelielu komandrindas rīku vietnē `bin/shikiphp` (projektā instalēts kā `vendor/bin/shikiphp`). Tam ir trīs komandas: `highlight` attēlo vienu failu HTML, bet `langs` un `themes` uzskaita komplekta saturu.

## `highlight`

Izcelt failu uz HTML un izvadīt rezultātu stdout.

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

- `<file>` — nolasāmā faila ceļš. Tam jābūt esošam failam; standarta ievade netiek nolasīta.
- `--lang` — valodas ID vai aizstājvārds. Ja nav norādīts, faila paplašinājums tiek izmantots kā ID bez izmaiņām (ja tāda nav, izmanto `txt`).
- `--theme` — tēmas ID. Pēc noklusējuma `github-dark`.

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

Izvade ir tas pats vienas tēmas `<pre class="shiki …">` bloks, ko atgriež [`codeToHtml`](https://shikiphp.inline0.dev/lv/docs/api#shikiphpcodetohtml), kam seko jauna rinda, tāpēc to var uzreiz novirzīt uz failu:

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

Komandai nav citu opciju. Divām tēmām, pārveidotājiem vai jebkurai citai [opcijai](https://shikiphp.inline0.dev/lv/docs/options) izmantojiet PHP API.

### Opcijas un argumenti

Opcijām jāizmanto forma `--name=value`. Jebkurš cits arguments, kas sākas ar `--`, tiek ignorēts, un par failu tiek uzskatīts pēdējais arguments, kas nesākas ar `--`. Tāpēc `--lang php file.rs` izceļ `file.rs` kā Rust: `--lang` tiek ignorēts, `php` tiek aizstāts ar `file.rs`, un valoda tiek noteikta pēc paplašinājuma `.rs`.

### Valodas noteikšana

Ja nav `--lang`, paplašinājums kļūst par valodas ID bez izmaiņām. Tas darbojas, ja pats paplašinājums ir komplektā iekļauts ID vai aizstājvārds — `php`, `js`, `ts`, `tsx`, `py`, `rs`, `go`, `md`, `yml`, `json`, `sh` un daudzi citi (skatiet [Valodas](https://shikiphp.inline0.dev/lv/docs/languages)). Tas nedarbojas šādos gadījumos:

- failiem bez paplašinājuma, piemēram, `Makefile` vai `Dockerfile`; tad tiek izmantots `txt`;
- paplašinājumiem, kas nav valodas ID, piemēram, `.txt`.

`txt` nav komplektā iekļauta valoda, tāpēc abos gadījumos pašlaik tiek parādīta kļūda `Unknown language "txt"` ([#3](https://github.com/inline0/shikiphp/issues/3)).
Šiem failiem norādiet `--lang`:

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

## `langs`

Izvadīt katru ID, ko komplekts pieņem kā valodu, pa vienam katrā rindā.

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

Sarakstā ir 350 rindas: 253 komplektā iekļautie gramatiku ID komplekta secībā (nevis alfabētiskā secībā), kam seko to 97 aizstājvārdi (`js`, `cjs`, `mjs` utt.). Gramatiku ID ietver 18 palīggramatikas, ko iegulst citas gramatikas, piemēram, `vue-directives` un `es-tag-css`; katalogu ar nosaukumiem un aizstājvārdiem skatiet sadaļā [Valodas](https://shikiphp.inline0.dev/lv/docs/languages). Lai iegūtu alfabētisku sarakstu, izmantojiet `sort`.

## `themes`

Izvadīt katru komplektā iekļauto tēmas ID pa vienam katrā rindā alfabētiskā secībā (65 tēmas).

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

Katalogu ar nosaukumiem un gaišo/tumšo tēmu veidiem skatiet sadaļā [Tēmas](https://shikiphp.inline0.dev/lv/docs/themes).

## Palīdzība un izejas statuss

Palaidiet bez komandas vai ar `-h` / `--help` / `help`, lai izvadītu lietošanas norādījumus.

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

| Situācija | Izvade | Izejas statuss |
| --- | --- | --- |
| Veiksmīga izpilde vai palīdzība | stdout | `0` |
| Nezināma komanda | `Unknown command: <name>` uz stderr | `1` |
| `highlight` bez faila vai fails neeksistē | lietošanas norādes rinda uz stderr | `1` |
| Nezināma valoda vai tēma | neapstrādāts `Shikiphp\Exceptions\Highlight` (fatāla kļūda PHP ar steka izsekojumu) | `255` |
