hico-horiuchi / plugin-builder

Qmonus-PluginBuilder

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CI

Qmonus-PluginBuilder

Qmonus-PluginBuilderは、VSCodeやPyCharm等のエディタでQmonus-SDKのPlugin開発ができるpythonベースのフレームワークです。

機能

Qmonus-SDKのPlugin開発の際、以下のようなエディタの持つ開発支援機能をそのまま利用可能です。

  • Autocomplete
  • Static Type Checking
  • Syntax Highlighting
  • Refactoring
  • など

コーディング後は、CLIコマンドによりQmonus-SDK用のPlugin(YAMLファイル)を出力できます。Plugin(YAMLファイル)からpython scriptの生成はできません。

サポート対象の機能

classmodulescenariodaemonをサポートしています。

インストール

pip installを実行してください。venvの利用を推奨します。

pip install -U git+https://github.com/qmonus/plugin-builder.git@${VERSION}

利用方法

開発の流れ

以下のようになります。

  1. initコマンドによりprojectを作成します。qmonus_sdk_pluginsディレクトリが生成されます。ディレクトリ構造を参考にしてください。
  2. qmonus_sdk_plugins内にpython scriptを記述します。initコマンドにより生成される雛形(classの雛形moduleの雛形scenarioの雛形daemonの雛形)を参考にしてください。classmoduleの追加・変更・削除を実施した場合はupdateコマンドprojectの更新処理を実施します(Static Type Checkingなどに必要な情報が生成されます)。
  3. dumpコマンドを使いYAMLファイルを生成します。

CLI

  • 作成
    • initコマンドにより、projectを作成します。
      • qmonus_sdk_pluginsディレクトリが生成されます。
      • qmonus_sdk_pluginsはpythonモジュールです。
      • qmonus_sdk_plugins内には、classmodulescenariodaemonが生成されます。ディレクトリ構造を参考にしてください。
# format
python -m qmonus_plugin_builder init {project_path}

# example
python -m qmonus_plugin_builder init .
  • 更新
    • classまたはmoduleを追加したり削除したりした場合は、updateコマンドを実行してください。
    • 更新により、Static Type Checkingなどに必要な情報がlibsディレクトリ配下に生成されます。
# format
python -m qmonus_plugin_builder update {project_path}

# example
python -m qmonus_plugin_builder update .
  • YAMLファイル生成
    • dumpコマンドにより、任意のディレクトリにYAMLファイルを出力します。
    • 内部的にはupdateコマンドの処理を実施してからYAMLファイルの生成が行われます。
    • 下記の例では、../axisにYAMLファイルを出力しています。
# format
python -m qmonus_plugin_builder dump {project_path} {YAML出力先のpath}

# example
python -m qmonus_plugin_builder dump . ../axis

ディレクトリ構造

{project_path}/
+-- qmonus_sdk_plugins/
    +-- __init__.py
    +-- libs/                                 # updateコマンドにより自動生成されるディレクトリ
    +-- plugins/
        +-- __init__.py
        +-- {workspace_name_1}/               # workspace名
            +-- __init__.py
            +-- classes/                      # classを記述するディレクトリ
            |   +-- __init__.py
            |   +-- {category_name_1}/        # カテゴリ名
            |       +-- __init__.py
            |       +-- {class_name_1}.py     # classを記述するファイル
            |       +-- {class_name_2}.py
            |       .
            |       +-- {class_name_n}.py
            +-- modules/                      # moduleを記述するディレクトリ
            |   +-- __init__.py
            |   +-- {category_name_1}/        # カテゴリ名
            |       +-- __init__.py
            |       +-- {module_name_1}.py    # moduleを記述するファイル
            |       +-- {module_name_2}.py
            |       .
            |       +-- {module_name_n}.py
            +-- scenarios/                    # scenarioを記述するディレクトリ
            |   +-- __init__.py
            |   +-- {category_name_1}/        # カテゴリ名
            |       +-- __init__.py
            |       +-- {scenario_name_1}.py  # scenarioを記述するファイル
            |       +-- {scenario_name_2}.py
            |       .
            |       +-- {scenario_name_n}.py
            +-- daemons/                      # daemonを記述するディレクトリ
                +-- __init__.py
                +-- {category_name_1}/        # カテゴリ名
                    +-- __init__.py
                    +-- {daemon_name_1}.py    # daemonを記述するファイル
                    +-- {daemon_name_2}.py
                    .
                    +-- {daemon_name_n}.py

About

Qmonus-PluginBuilder

License:MIT License


Languages

Language:Python 100.0%