# 拡張したい

このページでは`haniwers`本体に手を加えずに、新しいコマンドを追加する方法を紹介します。
`haniwers`は、CLIの作成に`Typer`パッケージを利用しています。
この`Typer`パッケージを、あなたのCLIでも利用することで、カスタムコマンドを簡単に追加できます。

`haniwers`本体のコードは変更したくないけど、個人ツールを導入したい場合などに利用してみてください。

## ディレクトリ構成

```none
your_project/
|--- main.py    # メインのCLIラッパー
|--- custom.py         # 任意のカスタムコード
```

## サンプルコード

カスタムコマンドとして追加したい内容を`custom.py`に作成してください。
このとき、カスタム関数は`Typer`を利用したコマンドとして定義してください。

```python
# custom.py
import typer

custom_app = typer.Typer()

@custom_app.command()
def custom_name(*args, **kwargs):
    """任意のカスタムコード"""
    typer.echo("custom.py の custom_name を実行しました")
```

`main.py`はCLIのラッパーとして作成してください。
`Typer`アプリを作成し、そこにコマンドを追加してください。

```python
# main.py
import typer
from haniwers.cli import app as haniwers_app  ## haniwers本体のCLIをインポート
from custom import custom_app   # あなたのカスタム関数

app = typer.Typer()
app.add_typer(haniwers_app)    # 本体のサブコマンドを統合
app.add_typer(custom_app, name="custom")    # カスタムコマンドを追加

if __name__ == "__main__":
    app()
```

## 実行例

```console
$ python main.py --help

// 通常のhaniwersコマンド
$ python main.py daq

// カスタムコマンド
$ python main.py custom custom_name
// -> custom.pyのcustom_nameを実行しました
```
