
# CLI

shikiphp innehåller ett litet kommandoradsverktyg på `bin/shikiphp` (installeras som
`vendor/bin/shikiphp` i ditt projekt). Det har tre kommandon: `highlight`
renderar en fil till HTML, medan `langs` och `themes` listar vad paketet
innehåller.

## `highlight`

Markera en fil till HTML och skriv ut resultatet till stdout.

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

- `<file>` — sökvägen som ska läsas. Det måste vara en befintlig fil; standardindata läses
  inte.
- `--lang` — språk-id eller alias. Om det utelämnas används filändelsen som den är som id (om ingen finns används `txt`).
- `--theme` — tema-id. Standardvärdet är `github-dark`.

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

Resultatet är samma block med ett enda tema i `<pre class="shiki …">` som
[`codeToHtml`](https://shikiphp.inline0.dev/sv/docs/api#shikiphpcodetohtml) returnerar, följt av en radbrytning, så att
det kan omdirigeras direkt till en fil:

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

Kommandot tar inga andra alternativ. För två teman, transformatorer eller andra
[alternativ](https://shikiphp.inline0.dev/sv/docs/options) använder du i stället PHP API.

### Alternativ och argument

Alternativ måste ha formen `--name=value`. Alla andra argument som börjar med
`--` ignoreras, och det sista argumentet som inte börjar med `--` används som
fil. Därför markerar `--lang php file.rs` `file.rs` som Rust: `--lang`
ignoreras, `php` ersätts av `file.rs` och språket hämtas från
ändelsen `.rs`.

### Språkinferens

Utan `--lang` blir filändelsen språk-id:t oförändrat. Det fungerar
när ändelsen själv är ett paketerat id eller alias — `php`, `js`, `ts`,
`tsx`, `py`, `rs`, `go`, `md`, `yml`, `json`, `sh` och många fler (se
[Språk](https://shikiphp.inline0.dev/sv/docs/languages)). Det fungerar inte för:

- filer utan filändelse, till exempel `Makefile` eller `Dockerfile`, som använder
  `txt` som reservvärde;
- filändelser som inte är språk-id:n, till exempel `.txt`.

`txt` är inte ett paketerat språk, så båda fallen avslutas för närvarande med ett
`Unknown language "txt"`-fel ([#3](https://github.com/inline0/shikiphp/issues/3)).
Ange `--lang` för sådana filer:

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

## `langs`

Skriv ut varje id som paketet godtar som språk, ett per rad.

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

Listan har 350 rader: de 253 paketerade grammatik-id:na i paketordning (inte
alfabetisk ordning), följda av deras 97 alias (`js`, `cjs`, `mjs` och så vidare).
Grammatik-id:na omfattar 18 hjälpargrammatiker som bäddas in i andra grammatiker, till exempel
`vue-directives` och `es-tag-css`. Se [Språk](https://shikiphp.inline0.dev/sv/docs/languages) för
katalogen med namn och alias. Skicka listan genom `sort` för att sortera den alfabetiskt.

## `themes`

Skriv ut varje paketerat tema-id, ett per rad, i alfabetisk ordning (65 teman).

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

Se [Teman](https://shikiphp.inline0.dev/sv/docs/themes) för katalogen med namn och typerna ljus/mörk.

## Hjälp och avslutningsstatus

Kör utan kommando eller med `-h` / `--help` / `help` för att skriva ut användningsinformation.

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

| Situation | Resultat | Avslutningsstatus |
| --- | --- | --- |
| Lyckat eller hjälp | stdout | `0` |
| Okänt kommando | `Unknown command: <name>` till stderr | `1` |
| `highlight` utan fil, eller om filen inte finns | användningsraden till stderr | `1` |
| Okänt språk eller tema | ett ohanterat `Shikiphp\Exceptions\Highlight` (PHP allvarligt fel med stackspårning) | `255` |
