# バッチ設計書 16---help

## 概要

本ドキュメントは、ヘルプを表示するCLIコマンド `--help` のバッチ設計書です。

### 本バッチの処理概要

このCLIコマンドは、Lua言語サーバーで利用可能なすべてのCLIオプションとその説明を標準出力に表示し、即座に終了します。ユーザーが利用可能なオプションを確認する際に使用されます。

**業務上の目的・背景**：Lua言語サーバーはCLIツールとしても使用でき、診断レポート生成、ドキュメント生成、AST可視化など様々な機能を提供しています。これらの機能を効果的に使用するために、利用可能なオプションとその使い方をユーザーに提供する必要があります。`--help` コマンドは、すべてのオプションを一覧表示し、各オプションの説明、使用例、デフォルト値を示します。

**バッチの実行タイミング**：手動でのヘルプ確認時に実行されます。

**主要な処理内容**：
1. 引数定義テーブルの作成（各オプションの型、説明、例、デフォルト値）
2. オプション名のソート
3. 各オプションの情報をフォーマットして出力
4. 終了コード0でのプログラム終了

**前後の処理との関連**：他の処理との依存関係はありません。単独で実行される情報表示コマンドです。

**影響範囲**：標準出力のみ。ファイルシステムや設定には影響しません。

## バッチ種別

情報表示・ヘルプドキュメント

## 実行スケジュール

| 項目 | 内容 |
|-----|------|
| 実行頻度 | 随時（手動実行） |
| 実行時刻 | - |
| 実行曜日 | - |
| 実行日 | - |
| トリガー | 手動 |

## 実行条件

### 前提条件

| 条件 | 説明 |
|-----|------|
| lua-language-server実行可能ファイルが存在 | CLIを実行するための本体 |
| utilityモジュールが利用可能 | sortPairs関数の使用 |

### 実行可否判定

`--help` オプションが指定されている場合、main.luaからcli/init.luaを経由してヘルプ表示モードで起動します。

## 入力仕様

### 入力パラメータ

| パラメータ名 | 型 | 必須 | デフォルト値 | 説明 |
|-------------|-----|-----|-------------|------|
| --help | boolean | Yes | - | ヘルプ表示モードの有効化 |

### 入力データソース

| データソース | 形式 | 説明 |
|-------------|------|------|
| args テーブル（ハードコード） | Lua table | 各CLIオプションの定義 |

## 出力仕様

### 出力データ

| 出力先 | 形式 | 説明 |
|-------|------|------|
| 標準出力 | テキスト | 全CLIオプションのヘルプ情報 |
| 終了コード | 整数 | 常に0 |

### 出力ファイル仕様

| 項目 | 内容 |
|-----|------|
| ファイル名 | なし（標準出力のみ） |
| 出力先 | - |
| 文字コード | UTF-8 |
| 区切り文字 | - |

## 処理フロー

### 処理シーケンス

```
1. CLI引数の解析
   └─ main.luaでグローバル変数HELPにtrueを設定

2. ヘルプ表示モード判定
   └─ cli/init.luaでHELPが設定されているか確認

3. cli/help.luaの読み込み・実行
   └─ utilityモジュールの読み込み
   └─ 引数定義テーブルの構築

4. 各オプションの出力
   └─ sortPairsでオプション名をソート
   └─ boolean型: オプション名のみ出力
   └─ その他: オプション名=<value>形式で出力
   └─ 説明文の整形・インデント付与
   └─ 選択肢（Values）があれば出力
   └─ デフォルト値があれば出力
   └─ 使用例があれば出力

5. プログラム終了
   └─ os.exit(0, true)で正常終了
```

### フローチャート

```mermaid
flowchart TD
    A[コマンド実行] --> B[引数解析]
    B --> C{--help指定?}
    C -->|No| D[通常処理へ]
    C -->|Yes| E[cli/help.lua読み込み]
    E --> F[引数定義テーブル構築]
    F --> G[オプション名ソート]
    G --> H{次のオプション?}
    H -->|あり| I[オプション名出力]
    I --> J[説明文出力]
    J --> K{選択肢あり?}
    K -->|Yes| L[Values出力]
    K -->|No| M{デフォルト値あり?}
    L --> M
    M -->|Yes| N[Default出力]
    M -->|No| O{使用例あり?}
    N --> O
    O -->|Yes| P[Example出力]
    O -->|No| H
    P --> H
    H -->|なし| Q[終了コード0で終了]
```

## データベース操作仕様

### 操作別データベース影響一覧

| 処理 | 対象テーブル | 操作種別 | 概要 |
|-----|-------------|---------|------|
| - | - | - | データベースは使用しない |

### テーブル別操作詳細

データベース操作は行いません。

## エラー処理

### エラーケース一覧

| エラーコード | エラー種別 | 発生条件 | 対処方法 |
|------------|----------|---------|---------|
| - | なし | - | エラーは発生しない |

### リトライ仕様

| 項目 | 内容 |
|-----|------|
| リトライ回数 | なし |
| リトライ間隔 | - |
| リトライ対象エラー | - |

### 障害時対応

通常、エラーは発生しません。

## トランザクション仕様

| 項目 | 内容 |
|-----|------|
| トランザクション範囲 | なし（読み取り専用） |
| コミットタイミング | - |
| ロールバック条件 | - |

## パフォーマンス要件

| 項目 | 内容 |
|-----|------|
| 想定処理件数 | 約15個のオプション |
| 目標処理時間 | ミリ秒単位 |
| メモリ使用量上限 | 最小限 |

## 排他制御

排他制御は不要です。

## ログ出力

| ログ種別 | 出力タイミング | 出力内容 |
|---------|--------------|---------|
| なし | - | ログ出力機能は使用しない |

## 監視・アラート

| 監視項目 | 閾値 | アラート先 |
|---------|-----|----------|
| なし | - | - |

## 備考

- このコマンドは `script/cli/help.lua` で実装されています
- 定義されているオプションは以下の通りです：
  - `--help`: ヘルプ表示
  - `--check`: 診断レポート生成
  - `--checklevel`: 診断レベルの設定
  - `--check_format`: 出力形式（json/pretty）
  - `--version`: バージョン表示
  - `--doc`: ドキュメント生成
  - `--doc_out_path`: ドキュメント出力先
  - `--doc_update`: 既存ドキュメントの更新
  - `--logpath`: ログ出力先
  - `--loglevel`: ログレベル
  - `--metapath`: メタデータ出力先
  - `--locale`: 言語設定
  - `--configpath`: 設定ファイルパス
  - `--force-accept-workspace`: ルート/ホームディレクトリを許可
  - `--socket`: TCPポート指定
  - `--develop`: 開発モード
- 説明文はMarkdown形式で記述されています
- オプションは名前順（アルファベット順）にソートされて表示されます
