cmdbox 0.6.3.1__py3-none-any.whl → 0.6.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of cmdbox might be problematic. Click here for more details.

Files changed (135) hide show
  1. cmdbox/app/app.py +16 -7
  2. cmdbox/app/common.py +2 -2
  3. cmdbox/app/commons/loghandler.py +4 -1
  4. cmdbox/app/commons/redis_client.py +1 -1
  5. cmdbox/app/edge.py +1 -1
  6. cmdbox/app/feature.py +1 -1
  7. cmdbox/app/features/cli/cmdbox_audit_createdb.py +224 -224
  8. cmdbox/app/features/cli/cmdbox_audit_delete.py +4 -4
  9. cmdbox/app/features/cli/cmdbox_audit_search.py +4 -4
  10. cmdbox/app/features/cli/cmdbox_audit_write.py +6 -8
  11. cmdbox/app/features/cli/cmdbox_client_file_copy.py +3 -3
  12. cmdbox/app/features/cli/cmdbox_client_file_download.py +3 -3
  13. cmdbox/app/features/cli/cmdbox_client_file_list.py +3 -3
  14. cmdbox/app/features/cli/cmdbox_client_file_mkdir.py +3 -3
  15. cmdbox/app/features/cli/cmdbox_client_file_move.py +3 -3
  16. cmdbox/app/features/cli/cmdbox_client_file_remove.py +3 -3
  17. cmdbox/app/features/cli/cmdbox_client_file_rmdir.py +3 -3
  18. cmdbox/app/features/cli/cmdbox_client_file_upload.py +3 -3
  19. cmdbox/app/features/cli/cmdbox_client_http.py +7 -6
  20. cmdbox/app/features/cli/cmdbox_client_server_info.py +4 -4
  21. cmdbox/app/features/cli/cmdbox_cmd_list.py +3 -3
  22. cmdbox/app/features/cli/cmdbox_cmd_load.py +5 -5
  23. cmdbox/app/features/cli/cmdbox_edge_config.py +1 -1
  24. cmdbox/app/features/cli/cmdbox_edge_start.py +3 -3
  25. cmdbox/app/features/cli/cmdbox_mcp_client.py +174 -174
  26. cmdbox/app/features/cli/cmdbox_mcp_proxy.py +96 -96
  27. cmdbox/app/features/cli/cmdbox_server_list.py +2 -2
  28. cmdbox/app/features/cli/cmdbox_server_start.py +103 -103
  29. cmdbox/app/features/cli/cmdbox_server_stop.py +4 -4
  30. cmdbox/app/features/cli/cmdbox_tts_install.py +307 -0
  31. cmdbox/app/features/cli/cmdbox_tts_say.py +179 -0
  32. cmdbox/app/features/cli/cmdbox_tts_start.py +329 -0
  33. cmdbox/app/features/cli/cmdbox_tts_stop.py +108 -0
  34. cmdbox/app/features/cli/cmdbox_web_apikey_add.py +91 -106
  35. cmdbox/app/features/cli/cmdbox_web_apikey_del.py +91 -106
  36. cmdbox/app/features/cli/cmdbox_web_gencert.py +6 -6
  37. cmdbox/app/features/cli/cmdbox_web_genpass.py +168 -168
  38. cmdbox/app/features/cli/cmdbox_web_group_add.py +94 -109
  39. cmdbox/app/features/cli/cmdbox_web_group_del.py +87 -102
  40. cmdbox/app/features/cli/cmdbox_web_group_edit.py +94 -109
  41. cmdbox/app/features/cli/cmdbox_web_group_list.py +87 -102
  42. cmdbox/app/features/cli/cmdbox_web_start.py +235 -235
  43. cmdbox/app/features/cli/cmdbox_web_stop.py +72 -72
  44. cmdbox/app/features/cli/cmdbox_web_user_add.py +104 -119
  45. cmdbox/app/features/cli/cmdbox_web_user_del.py +87 -102
  46. cmdbox/app/features/cli/cmdbox_web_user_edit.py +104 -119
  47. cmdbox/app/features/cli/cmdbox_web_user_list.py +87 -102
  48. cmdbox/app/filer.py +9 -9
  49. cmdbox/app/mcp.py +15 -7
  50. cmdbox/app/options.py +46 -43
  51. cmdbox/app/server.py +224 -224
  52. cmdbox/app/web.py +1 -1
  53. cmdbox/extensions/features.yml +3 -0
  54. cmdbox/extensions/sample_project/sample/app/features/cli/sample_client_time.py +2 -2
  55. cmdbox/extensions/sample_project/sample/app/features/cli/sample_server_time.py +3 -3
  56. cmdbox/licenses/LICENSE_Werkzeug_3_1_1_BSD_License.txt +28 -0
  57. cmdbox/licenses/LICENSE_absolufy-imports_0_3_1_MIT_License.txt +21 -0
  58. cmdbox/licenses/LICENSE_cyclopts_3_22_5_Apache_Software_License.txt +201 -0
  59. cmdbox/licenses/LICENSE_isodate_0_7_2_BSD_License.txt +26 -0
  60. cmdbox/licenses/LICENSE_lazy-object-proxy_1_11_0_BSD_License.txt +20 -0
  61. cmdbox/licenses/LICENSE_openapi-core_0_19_5_BSD_License.txt +29 -0
  62. cmdbox/licenses/LICENSE_openapi-schema-validator_0_6_3_BSD_License.txt +29 -0
  63. cmdbox/licenses/LICENSE_openapi-spec-validator_0_7_2_Apache_Software_License.txt +201 -0
  64. cmdbox/licenses/LICENSE_opentelemetry-semantic-conventions_0_57b0_UNKNOWN.txt +201 -0
  65. cmdbox/licenses/LICENSE_parse_1_20_2_MIT_License.txt +19 -0
  66. cmdbox/licenses/LICENSE_pathable_0_4_4_Apache_Software_License.txt +201 -0
  67. cmdbox/licenses/{LICENSE_pillow_11_2_1_UNKNOWN.txt → LICENSE_pillow_11_3_0_UNKNOWN.txt} +393 -3
  68. cmdbox/licenses/LICENSE_pyperclip_1_9_0_BSD_License.txt +27 -0
  69. cmdbox/licenses/LICENSE_rfc3339-validator_0_1_4_MIT_License.txt +22 -0
  70. cmdbox/licenses/LICENSE_rich-rst_1_3_1_MIT_License.txt +7 -0
  71. cmdbox/licenses/{LICENSE_setuptools_65_5_0_MIT_License.txt → LICENSE_setuptools_80_9_0_UNKNOWN.txt} +0 -2
  72. cmdbox/licenses/LICENSE_tokenizers_0_21_4_Apache_Software_License.txt +1 -0
  73. cmdbox/licenses/LICENSE_voicevox_core_0_16_0_MIT.txt +20 -0
  74. cmdbox/licenses/LICENSE_watchdog_6_0_0_Apache_Software_License.txt +16 -0
  75. cmdbox/licenses/{LICENSE_typer_0_16_0_MIT_License.txt → LICENSE_wsproto_1_2_0_MIT_License.txt} +2 -2
  76. cmdbox/licenses/files.txt +56 -42
  77. cmdbox/logconf_cmdbox.yml +104 -0
  78. cmdbox/version.py +2 -2
  79. cmdbox/web/agent.html +8 -2
  80. cmdbox/web/assets/cmdbox/agent.js +182 -1
  81. cmdbox/web/assets/cmdbox/common.js +16 -3
  82. cmdbox/web/assets/cmdbox/svgicon.js +18 -0
  83. {cmdbox-0.6.3.1.dist-info → cmdbox-0.6.4.dist-info}/METADATA +28 -20
  84. {cmdbox-0.6.3.1.dist-info → cmdbox-0.6.4.dist-info}/RECORD +124 -114
  85. {cmdbox-0.6.3.1.dist-info → cmdbox-0.6.4.dist-info}/WHEEL +1 -1
  86. cmdbox/config.yml +0 -3
  87. cmdbox/licenses/LICENSE_httptools_0_6_4_MIT_License.txt +0 -21
  88. cmdbox/licenses/LICENSE_shellingham_1_5_4_ISC_License-ISCL.txt +0 -13
  89. cmdbox/licenses/LICENSE_watchfiles_1_1_0_MIT_License.txt +0 -21
  90. cmdbox/logconf_audit.yml +0 -43
  91. cmdbox/logconf_client.yml +0 -43
  92. cmdbox/logconf_edge.yml +0 -43
  93. cmdbox/logconf_gui.yml +0 -43
  94. cmdbox/logconf_mcp.yml +0 -43
  95. cmdbox/logconf_server.yml +0 -43
  96. cmdbox/logconf_web.yml +0 -43
  97. /cmdbox/licenses/{LICENSE_Authlib_1_6_0_BSD_License.txt → LICENSE_Authlib_1_6_1_BSD_License.txt} +0 -0
  98. /cmdbox/licenses/{LICENSE_SQLAlchemy_2_0_41_MIT.txt → LICENSE_SQLAlchemy_2_0_42_MIT.txt} +0 -0
  99. /cmdbox/licenses/{LICENSE_aiohttp_3_12_13_Apache-2_0.txt → LICENSE_aiohttp_3_12_15_Apache-2_0_AND_MIT.txt} +0 -0
  100. /cmdbox/licenses/{LICENSE_aiosignal_1_3_2_Apache_Software_License.txt → LICENSE_aiosignal_1_4_0_Apache_Software_License.txt} +0 -0
  101. /cmdbox/licenses/{LICENSE_certifi_2025_6_15_Mozilla_Public_License_2_0-MPL_2_0.txt → LICENSE_certifi_2025_7_14_Mozilla_Public_License_2_0-MPL_2_0.txt} +0 -0
  102. /cmdbox/licenses/{LICENSE_cryptography_45_0_4_Apache-2_0_OR_BSD-3-Clause.txt → LICENSE_cryptography_45_0_5_Apache-2_0_OR_BSD-3-Clause.txt} +0 -0
  103. /cmdbox/licenses/{LICENSE_docstring_parser_0_16_MIT_License.txt → LICENSE_docstring_parser_0_17_0_MIT_License.txt} +0 -0
  104. /cmdbox/licenses/{LICENSE_fastapi_0_115_14_MIT_License.txt → LICENSE_fastapi_0_116_1_MIT_License.txt} +0 -0
  105. /cmdbox/licenses/{LICENSE_fastmcp_2_10_1_Apache_Software_License.txt → LICENSE_fastmcp_2_11_0_Apache_Software_License.txt} +0 -0
  106. /cmdbox/licenses/{LICENSE_fsspec_2025_5_1_BSD_License.txt → LICENSE_fsspec_2025_7_0_BSD_License.txt} +0 -0
  107. /cmdbox/licenses/{LICENSE_google-adk_1_5_0_Apache_Software_License.txt → LICENSE_google-adk_1_9_0_Apache_Software_License.txt} +0 -0
  108. /cmdbox/licenses/{LICENSE_google-api-python-client_2_174_0_Apache_Software_License.txt → LICENSE_google-api-python-client_2_177_0_Apache_Software_License.txt} +0 -0
  109. /cmdbox/licenses/{LICENSE_google-cloud-aiplatform_1_100_0_Apache_2_0.txt → LICENSE_google-cloud-aiplatform_1_106_0_Apache_2_0.txt} +0 -0
  110. /cmdbox/licenses/{LICENSE_google-cloud-bigquery_3_34_0_Apache_Software_License.txt → LICENSE_google-cloud-bigquery_3_35_1_Apache_Software_License.txt} +0 -0
  111. /cmdbox/licenses/{LICENSE_google-genai_1_23_0_Apache_Software_License.txt → LICENSE_google-genai_1_28_0_Apache_Software_License.txt} +0 -0
  112. /cmdbox/licenses/{LICENSE_grpcio-status_1_73_1_Apache_Software_License.txt → LICENSE_grpcio-status_1_74_0_Apache_Software_License.txt} +0 -0
  113. /cmdbox/licenses/{LICENSE_grpcio_1_73_1_Apache_Software_License.txt → LICENSE_grpcio_1_74_0_Apache_Software_License.txt} +0 -0
  114. /cmdbox/licenses/{LICENSE_huggingface-hub_0_33_1_Apache_Software_License.txt → LICENSE_huggingface-hub_0_34_3_Apache_Software_License.txt} +0 -0
  115. /cmdbox/licenses/{LICENSE_opentelemetry-api_1_34_1_Apache_Software_License.txt → LICENSE_jsonschema-path_0_3_4_Apache_Software_License.txt} +0 -0
  116. /cmdbox/licenses/{LICENSE_jsonschema_4_24_0_UNKNOWN.txt → LICENSE_jsonschema_4_25_0_UNKNOWN.txt} +0 -0
  117. /cmdbox/licenses/{LICENSE_litellm_1_73_6_MIT_License.txt → LICENSE_litellm_1_74_12_MIT_License.txt} +0 -0
  118. /cmdbox/licenses/{LICENSE_mcp_1_10_1_MIT_License.txt → LICENSE_mcp_1_12_3_MIT_License.txt} +0 -0
  119. /cmdbox/licenses/{LICENSE_multidict_6_6_2_Apache_License_2_0.txt → LICENSE_multidict_6_6_3_Apache_License_2_0.txt} +0 -0
  120. /cmdbox/licenses/{LICENSE_nh3_0_2_21_MIT.txt → LICENSE_nh3_0_3_0_MIT.txt} +0 -0
  121. /cmdbox/licenses/{LICENSE_numpy_2_3_1_BSD_License.txt → LICENSE_numpy_2_3_2_BSD_License.txt} +0 -0
  122. /cmdbox/licenses/{LICENSE_openai_1_93_0_Apache_Software_License.txt → LICENSE_openai_1_98_0_Apache_Software_License.txt} +0 -0
  123. /cmdbox/licenses/{LICENSE_opentelemetry-sdk_1_34_1_Apache_Software_License.txt → LICENSE_opentelemetry-api_1_36_0_UNKNOWN.txt} +0 -0
  124. /cmdbox/licenses/{LICENSE_opentelemetry-semantic-conventions_0_55b1_Apache_Software_License.txt → LICENSE_opentelemetry-sdk_1_36_0_UNKNOWN.txt} +0 -0
  125. /cmdbox/licenses/{LICENSE_tokenizers_0_21_2_Apache_Software_License.txt → LICENSE_pywin32_311_Python_Software_Foundation_License.txt} +0 -0
  126. /cmdbox/licenses/{LICENSE_regex_2024_11_6_Apache_Software_License.txt → LICENSE_regex_2025_7_34_UNKNOWN.txt} +0 -0
  127. /cmdbox/licenses/{LICENSE_rich_14_0_0_MIT_License.txt → LICENSE_rich_14_1_0_MIT_License.txt} +0 -0
  128. /cmdbox/licenses/{LICENSE_rpds-py_0_25_1_MIT.txt → LICENSE_rpds-py_0_26_0_MIT.txt} +0 -0
  129. /cmdbox/licenses/{LICENSE_sse-starlette_2_3_6_BSD_License.txt → LICENSE_sse-starlette_3_0_2_UNKNOWN.txt} +0 -0
  130. /cmdbox/licenses/{LICENSE_starlette_0_46_2_BSD_License.txt → LICENSE_starlette_0_47_2_BSD_License.txt} +0 -0
  131. /cmdbox/licenses/{LICENSE_typing_extensions_4_14_0_UNKNOWN.txt → LICENSE_typing_extensions_4_14_1_UNKNOWN.txt} +0 -0
  132. /cmdbox/licenses/{LICENSE_zope_event_5_1_Zope_Public_License.txt → LICENSE_zope_event_5_1_1_Zope_Public_License.txt} +0 -0
  133. {cmdbox-0.6.3.1.dist-info → cmdbox-0.6.4.dist-info}/entry_points.txt +0 -0
  134. {cmdbox-0.6.3.1.dist-info → cmdbox-0.6.4.dist-info/licenses}/LICENSE +0 -0
  135. {cmdbox-0.6.3.1.dist-info → cmdbox-0.6.4.dist-info}/top_level.txt +0 -0
@@ -1,102 +1,87 @@
1
- from cmdbox.app import common, feature, web
2
- from cmdbox.app.options import Options
3
- from pathlib import Path
4
- from typing import Dict, Any, Tuple, List, Union
5
- import argparse
6
- import logging
7
-
8
-
9
- class WebGroupDel(feature.UnsupportEdgeFeature):
10
- def get_mode(self) -> Union[str, List[str]]:
11
- """
12
- この機能のモードを返します
13
-
14
- Returns:
15
- Union[str, List[str]]: モード
16
- """
17
- return 'web'
18
-
19
- def get_cmd(self):
20
- """
21
- この機能のコマンドを返します
22
-
23
- Returns:
24
- str: コマンド
25
- """
26
- return 'group_del'
27
-
28
- def get_option(self):
29
- """
30
- この機能のオプションを返します
31
-
32
- Returns:
33
- Dict[str, Any]: オプション
34
- """
35
- return dict(
36
- use_redis=self.USE_REDIS_MEIGHT, nouse_webmode=False,
37
- description_ja="Webモードのグループを削除します。",
38
- description_en="Del a group in Web mode.",
39
- choice=[
40
- dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
41
- description_ja="Redisサーバーのサービスホストを指定します。",
42
- description_en="Specify the service host of the Redis server."),
43
- dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
44
- description_ja="Redisサーバーのサービスポートを指定します。",
45
- description_en="Specify the service port of the Redis server."),
46
- dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
47
- description_ja="Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `password` を使用します。",
48
- description_en="Specify the access password of the Redis server (optional). If omitted, `password` is used."),
49
- dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
50
- description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
51
- description_en="Specify the service name of the inference server. If omitted, `server` is used."),
52
- dict(opt="data", type=Options.T_DIR, default=self.default_data, required=False, multi=False, hide=False, choice=None,
53
- description_ja=f"省略した時は `$HONE/.{self.ver.__appid__}` を使用します。",
54
- description_en=f"When omitted, `$HONE/.{self.ver.__appid__}` is used."),
55
- dict(opt="group_id", type=Options.T_INT, default=None, required=True, multi=False, hide=False, choice=None,
56
- description_ja="グループIDを指定します。",
57
- description_en="Specify the group ID. Do not duplicate other groups."),
58
- dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None, fileio="in",
59
- description_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
60
- description_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
61
- dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
62
- description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力をConsole logに出力します。",
63
- description_en="Available only in GUI mode. Outputs standard output during command execution to Console log."),
64
- dict(opt="capture_stdout", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
65
- description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力をキャプチャーし、実行結果画面に表示します。",
66
- description_en="Available only in GUI mode. Captures standard output during command execution and displays it on the execution result screen."),
67
- dict(opt="capture_maxsize", type=Options.T_INT, default=self.DEFAULT_CAPTURE_MAXSIZE, required=False, multi=False, hide=True, choice=None,
68
- description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力の最大キャプチャーサイズを指定します。",
69
- description_en="Available only in GUI mode. Specifies the maximum capture size of standard output when executing commands."),
70
- ]
71
- )
72
-
73
- def apprun(self, logger:logging.Logger, args:argparse.Namespace, tm:float, pf:List[Dict[str, float]]=[]) -> Tuple[int, Dict[str, Any], Any]:
74
- """
75
- この機能の実行を行います
76
-
77
- Args:
78
- logger (logging.Logger): ロガー
79
- args (argparse.Namespace): 引数
80
- tm (float): 実行開始時間
81
- pf (List[Dict[str, float]]): 呼出元のパフォーマンス情報
82
-
83
- Returns:
84
- Tuple[int, Dict[str, Any], Any]: 終了コード, 結果, オブジェクト
85
- """
86
- if args.data is None:
87
- msg = dict(warn=f"Please specify the --data option.")
88
- common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
89
- return 1, msg, None
90
- w = None
91
- try:
92
- w = web.Web(logger, Path(args.data), appcls=self.appcls, ver=self.ver,
93
- redis_host=args.host, redis_port=args.port, redis_password=args.password, svname=args.svname,
94
- signin_file=args.signin_file)
95
- w.group_del(args.group_id)
96
- msg = dict(success=f"group ID {args.group_id} has been deleted.")
97
- common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
98
- return 0, msg, w
99
- except Exception as e:
100
- msg = dict(warn=f"{e}")
101
- common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
102
- return 1, msg, w
1
+ from cmdbox.app import common, feature, web
2
+ from cmdbox.app.options import Options
3
+ from pathlib import Path
4
+ from typing import Dict, Any, Tuple, List, Union
5
+ import argparse
6
+ import logging
7
+
8
+
9
+ class WebGroupDel(feature.UnsupportEdgeFeature):
10
+ def get_mode(self) -> Union[str, List[str]]:
11
+ """
12
+ この機能のモードを返します
13
+
14
+ Returns:
15
+ Union[str, List[str]]: モード
16
+ """
17
+ return 'web'
18
+
19
+ def get_cmd(self):
20
+ """
21
+ この機能のコマンドを返します
22
+
23
+ Returns:
24
+ str: コマンド
25
+ """
26
+ return 'group_del'
27
+
28
+ def get_option(self):
29
+ """
30
+ この機能のオプションを返します
31
+
32
+ Returns:
33
+ Dict[str, Any]: オプション
34
+ """
35
+ return dict(
36
+ use_redis=self.USE_REDIS_MEIGHT, nouse_webmode=False,
37
+ description_ja="Webモードのグループを削除します。",
38
+ description_en="Del a group in Web mode.",
39
+ choice=[
40
+ dict(opt="group_id", type=Options.T_INT, default=None, required=True, multi=False, hide=False, choice=None,
41
+ description_ja="グループIDを指定します。",
42
+ description_en="Specify the group ID. Do not duplicate other groups."),
43
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None, fileio="in",
44
+ description_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
45
+ description_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
46
+ dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
47
+ description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力をConsole logに出力します。",
48
+ description_en="Available only in GUI mode. Outputs standard output during command execution to Console log."),
49
+ dict(opt="capture_stdout", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
50
+ description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力をキャプチャーし、実行結果画面に表示します。",
51
+ description_en="Available only in GUI mode. Captures standard output during command execution and displays it on the execution result screen."),
52
+ dict(opt="capture_maxsize", type=Options.T_INT, default=self.DEFAULT_CAPTURE_MAXSIZE, required=False, multi=False, hide=True, choice=None,
53
+ description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力の最大キャプチャーサイズを指定します。",
54
+ description_en="Available only in GUI mode. Specifies the maximum capture size of standard output when executing commands."),
55
+ ]
56
+ )
57
+
58
+ def apprun(self, logger:logging.Logger, args:argparse.Namespace, tm:float, pf:List[Dict[str, float]]=[]) -> Tuple[int, Dict[str, Any], Any]:
59
+ """
60
+ この機能の実行を行います
61
+
62
+ Args:
63
+ logger (logging.Logger): ロガー
64
+ args (argparse.Namespace): 引数
65
+ tm (float): 実行開始時間
66
+ pf (List[Dict[str, float]]): 呼出元のパフォーマンス情報
67
+
68
+ Returns:
69
+ Tuple[int, Dict[str, Any], Any]: 終了コード, 結果, オブジェクト
70
+ """
71
+ if args.data is None:
72
+ msg = dict(warn=f"Please specify the --data option.")
73
+ common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
74
+ return self.RESP_WARN, msg, None
75
+ w = None
76
+ try:
77
+ w = web.Web(logger, self.default_data, appcls=self.appcls, ver=self.ver,
78
+ redis_host=self.default_host, redis_port=self.default_port, redis_password=self.default_pass, svname=self.default_svname,
79
+ signin_file=args.signin_file)
80
+ w.group_del(args.group_id)
81
+ msg = dict(success=f"group ID {args.group_id} has been deleted.")
82
+ common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
83
+ return self.RESP_SUCCESS, msg, w
84
+ except Exception as e:
85
+ msg = dict(warn=f"{e}")
86
+ common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
87
+ return self.RESP_WARN, msg, w
@@ -1,109 +1,94 @@
1
- from cmdbox.app import common, feature, web
2
- from cmdbox.app.options import Options
3
- from pathlib import Path
4
- from typing import Dict, Any, Tuple, List, Union
5
- import argparse
6
- import logging
7
-
8
-
9
- class WebGroupEdit(feature.UnsupportEdgeFeature):
10
- def get_mode(self) -> Union[str, List[str]]:
11
- """
12
- この機能のモードを返します
13
-
14
- Returns:
15
- Union[str, List[str]]: モード
16
- """
17
- return 'web'
18
-
19
- def get_cmd(self):
20
- """
21
- この機能のコマンドを返します
22
-
23
- Returns:
24
- str: コマンド
25
- """
26
- return 'group_edit'
27
-
28
- def get_option(self):
29
- """
30
- この機能のオプションを返します
31
-
32
- Returns:
33
- Dict[str, Any]: オプション
34
- """
35
- return dict(
36
- use_redis=self.USE_REDIS_MEIGHT, nouse_webmode=False,
37
- description_ja="Webモードのグループを編集します。",
38
- description_en="Edit a group in Web mode.",
39
- choice=[
40
- dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
41
- description_ja="Redisサーバーのサービスホストを指定します。",
42
- description_en="Specify the service host of the Redis server."),
43
- dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
44
- description_ja="Redisサーバーのサービスポートを指定します。",
45
- description_en="Specify the service port of the Redis server."),
46
- dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
47
- description_ja="Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `password` を使用します。",
48
- description_en="Specify the access password of the Redis server (optional). If omitted, `password` is used."),
49
- dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
50
- description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
51
- description_en="Specify the service name of the inference server. If omitted, `server` is used."),
52
- dict(opt="data", type=Options.T_DIR, default=self.default_data, required=False, multi=False, hide=False, choice=None,
53
- description_ja=f"省略した時は `$HONE/.{self.ver.__appid__}` を使用します。",
54
- description_en=f"When omitted, `$HONE/.{self.ver.__appid__}` is used."),
55
- dict(opt="group_id", type=Options.T_INT, default=None, required=True, multi=False, hide=False, choice=None,
56
- description_ja="グループIDを指定します。",
57
- description_en="Specify the group ID. Do not duplicate other groups."),
58
- dict(opt="group_name", type=Options.T_STR, default=None, required=True, multi=False, hide=False, choice=None,
59
- description_ja="グループ名を指定します。他のグループと重複しないようにしてください。",
60
- description_en="Specify a group name. Do not duplicate other groups."),
61
- dict(opt="group_parent", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
62
- description_ja="親グループ名を指定します。",
63
- description_en="Specifies the parent group name."),
64
- dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None, fileio="in",
65
- description_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
66
- description_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
67
- dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
68
- description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力をConsole logに出力します。",
69
- description_en="Available only in GUI mode. Outputs standard output during command execution to Console log."),
70
- dict(opt="capture_stdout", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
71
- description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力をキャプチャーし、実行結果画面に表示します。",
72
- description_en="Available only in GUI mode. Captures standard output during command execution and displays it on the execution result screen."),
73
- dict(opt="capture_maxsize", type=Options.T_INT, default=self.DEFAULT_CAPTURE_MAXSIZE, required=False, multi=False, hide=True, choice=None,
74
- description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力の最大キャプチャーサイズを指定します。",
75
- description_en="Available only in GUI mode. Specifies the maximum capture size of standard output when executing commands."),
76
- ]
77
- )
78
-
79
- def apprun(self, logger:logging.Logger, args:argparse.Namespace, tm:float, pf:List[Dict[str, float]]=[]) -> Tuple[int, Dict[str, Any], Any]:
80
- """
81
- この機能の実行を行います
82
-
83
- Args:
84
- logger (logging.Logger): ロガー
85
- args (argparse.Namespace): 引数
86
- tm (float): 実行開始時間
87
- pf (List[Dict[str, float]]): 呼出元のパフォーマンス情報
88
-
89
- Returns:
90
- Tuple[int, Dict[str, Any], Any]: 終了コード, 結果, オブジェクト
91
- """
92
- if args.data is None:
93
- msg = dict(warn=f"Please specify the --data option.")
94
- common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
95
- return 1, msg, None
96
- w = None
97
- try:
98
- w = web.Web(logger, Path(args.data), appcls=self.appcls, ver=self.ver,
99
- redis_host=args.host, redis_port=args.port, redis_password=args.password, svname=args.svname,
100
- signin_file=args.signin_file)
101
- group = dict(gid=args.group_id, name=args.group_name, parent=args.group_parent)
102
- w.group_edit(group)
103
- msg = dict(success=f"group ID {args.group_id} has been edited.")
104
- common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
105
- return 0, msg, w
106
- except Exception as e:
107
- msg = dict(warn=f"{e}")
108
- common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
109
- return 1, msg, w
1
+ from cmdbox.app import common, feature, web
2
+ from cmdbox.app.options import Options
3
+ from pathlib import Path
4
+ from typing import Dict, Any, Tuple, List, Union
5
+ import argparse
6
+ import logging
7
+
8
+
9
+ class WebGroupEdit(feature.UnsupportEdgeFeature):
10
+ def get_mode(self) -> Union[str, List[str]]:
11
+ """
12
+ この機能のモードを返します
13
+
14
+ Returns:
15
+ Union[str, List[str]]: モード
16
+ """
17
+ return 'web'
18
+
19
+ def get_cmd(self):
20
+ """
21
+ この機能のコマンドを返します
22
+
23
+ Returns:
24
+ str: コマンド
25
+ """
26
+ return 'group_edit'
27
+
28
+ def get_option(self):
29
+ """
30
+ この機能のオプションを返します
31
+
32
+ Returns:
33
+ Dict[str, Any]: オプション
34
+ """
35
+ return dict(
36
+ use_redis=self.USE_REDIS_MEIGHT, nouse_webmode=False,
37
+ description_ja="Webモードのグループを編集します。",
38
+ description_en="Edit a group in Web mode.",
39
+ choice=[
40
+ dict(opt="group_id", type=Options.T_INT, default=None, required=True, multi=False, hide=False, choice=None,
41
+ description_ja="グループIDを指定します。",
42
+ description_en="Specify the group ID. Do not duplicate other groups."),
43
+ dict(opt="group_name", type=Options.T_STR, default=None, required=True, multi=False, hide=False, choice=None,
44
+ description_ja="グループ名を指定します。他のグループと重複しないようにしてください。",
45
+ description_en="Specify a group name. Do not duplicate other groups."),
46
+ dict(opt="group_parent", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
47
+ description_ja="親グループ名を指定します。",
48
+ description_en="Specifies the parent group name."),
49
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None, fileio="in",
50
+ description_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
51
+ description_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
52
+ dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
53
+ description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力をConsole logに出力します。",
54
+ description_en="Available only in GUI mode. Outputs standard output during command execution to Console log."),
55
+ dict(opt="capture_stdout", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
56
+ description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力をキャプチャーし、実行結果画面に表示します。",
57
+ description_en="Available only in GUI mode. Captures standard output during command execution and displays it on the execution result screen."),
58
+ dict(opt="capture_maxsize", type=Options.T_INT, default=self.DEFAULT_CAPTURE_MAXSIZE, required=False, multi=False, hide=True, choice=None,
59
+ description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力の最大キャプチャーサイズを指定します。",
60
+ description_en="Available only in GUI mode. Specifies the maximum capture size of standard output when executing commands."),
61
+ ]
62
+ )
63
+
64
+ def apprun(self, logger:logging.Logger, args:argparse.Namespace, tm:float, pf:List[Dict[str, float]]=[]) -> Tuple[int, Dict[str, Any], Any]:
65
+ """
66
+ この機能の実行を行います
67
+
68
+ Args:
69
+ logger (logging.Logger): ロガー
70
+ args (argparse.Namespace): 引数
71
+ tm (float): 実行開始時間
72
+ pf (List[Dict[str, float]]): 呼出元のパフォーマンス情報
73
+
74
+ Returns:
75
+ Tuple[int, Dict[str, Any], Any]: 終了コード, 結果, オブジェクト
76
+ """
77
+ if args.data is None:
78
+ msg = dict(warn=f"Please specify the --data option.")
79
+ common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
80
+ return self.RESP_WARN, msg, None
81
+ w = None
82
+ try:
83
+ w = web.Web(logger, self.default_data, appcls=self.appcls, ver=self.ver,
84
+ redis_host=self.default_host, redis_port=self.default_port, redis_password=self.default_pass, svname=self.default_svname,
85
+ signin_file=args.signin_file)
86
+ group = dict(gid=args.group_id, name=args.group_name, parent=args.group_parent)
87
+ w.group_edit(group)
88
+ msg = dict(success=f"group ID {args.group_id} has been edited.")
89
+ common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
90
+ return self.RESP_SUCCESS, msg, w
91
+ except Exception as e:
92
+ msg = dict(warn=f"{e}")
93
+ common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
94
+ return self.RESP_WARN, msg, w
@@ -1,102 +1,87 @@
1
- from cmdbox.app import common, feature, web
2
- from cmdbox.app.options import Options
3
- from pathlib import Path
4
- from typing import Dict, Any, Tuple, List, Union
5
- import argparse
6
- import logging
7
-
8
-
9
- class WebGroupList(feature.OneshotResultEdgeFeature):
10
- def get_mode(self) -> Union[str, List[str]]:
11
- """
12
- この機能のモードを返します
13
-
14
- Returns:
15
- Union[str, List[str]]: モード
16
- """
17
- return 'web'
18
-
19
- def get_cmd(self):
20
- """
21
- この機能のコマンドを返します
22
-
23
- Returns:
24
- str: コマンド
25
- """
26
- return 'group_list'
27
-
28
- def get_option(self):
29
- """
30
- この機能のオプションを返します
31
-
32
- Returns:
33
- Dict[str, Any]: オプション
34
- """
35
- return dict(
36
- use_redis=self.USE_REDIS_MEIGHT, nouse_webmode=False,
37
- description_ja="Webモードのグループー一覧を取得します。",
38
- description_en="Get a list of users in Web mode.",
39
- choice=[
40
- dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
41
- description_ja="Redisサーバーのサービスホストを指定します。",
42
- description_en="Specify the service host of the Redis server."),
43
- dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
44
- description_ja="Redisサーバーのサービスポートを指定します。",
45
- description_en="Specify the service port of the Redis server."),
46
- dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
47
- description_ja="Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `password` を使用します。",
48
- description_en="Specify the access password of the Redis server (optional). If omitted, `password` is used."),
49
- dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
50
- description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
51
- description_en="Specify the service name of the inference server. If omitted, `server` is used."),
52
- dict(opt="data", type=Options.T_DIR, default=self.default_data, required=False, multi=False, hide=False, choice=None,
53
- description_ja=f"省略した時は `$HONE/.{self.ver.__appid__}` を使用します。",
54
- description_en=f"When omitted, `$HONE/.{self.ver.__appid__}` is used."),
55
- dict(opt="group_name", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
56
- description_ja="グループ名を指定して取得します。省略した時は全てのグループを取得します。",
57
- description_en="Retrieved by specifying a group name. If omitted, all groups are retrieved."),
58
- dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None, fileio="in",
59
- description_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
60
- description_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
61
- dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
62
- description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力をConsole logに出力します。",
63
- description_en="Available only in GUI mode. Outputs standard output during command execution to Console log."),
64
- dict(opt="capture_stdout", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
65
- description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力をキャプチャーし、実行結果画面に表示します。",
66
- description_en="Available only in GUI mode. Captures standard output during command execution and displays it on the execution result screen."),
67
- dict(opt="capture_maxsize", type=Options.T_INT, default=self.DEFAULT_CAPTURE_MAXSIZE, required=False, multi=False, hide=True, choice=None,
68
- description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力の最大キャプチャーサイズを指定します。",
69
- description_en="Available only in GUI mode. Specifies the maximum capture size of standard output when executing commands."),
70
- ]
71
- )
72
-
73
- def apprun(self, logger:logging.Logger, args:argparse.Namespace, tm:float, pf:List[Dict[str, float]]=[]) -> Tuple[int, Dict[str, Any], Any]:
74
- """
75
- この機能の実行を行います
76
-
77
- Args:
78
- logger (logging.Logger): ロガー
79
- args (argparse.Namespace): 引数
80
- tm (float): 実行開始時間
81
- pf (List[Dict[str, float]]): 呼出元のパフォーマンス情報
82
-
83
- Returns:
84
- Tuple[int, Dict[str, Any], Any]: 終了コード, 結果, オブジェクト
85
- """
86
- if args.data is None:
87
- msg = dict(warn=f"Please specify the --data option.")
88
- common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
89
- return 1, msg, None
90
- w = None
91
- try:
92
- w = web.Web(logger, Path(args.data), appcls=self.appcls, ver=self.ver,
93
- redis_host=args.host, redis_port=args.port, redis_password=args.password, svname=args.svname,
94
- signin_file=args.signin_file)
95
- groups = w.group_list(args.group_name)
96
- msg = dict(success=groups)
97
- common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
98
- return 0, msg, w
99
- except Exception as e:
100
- msg = dict(warn=f"{e}")
101
- common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
102
- return 1, msg, w
1
+ from cmdbox.app import common, feature, web
2
+ from cmdbox.app.options import Options
3
+ from pathlib import Path
4
+ from typing import Dict, Any, Tuple, List, Union
5
+ import argparse
6
+ import logging
7
+
8
+
9
+ class WebGroupList(feature.OneshotResultEdgeFeature):
10
+ def get_mode(self) -> Union[str, List[str]]:
11
+ """
12
+ この機能のモードを返します
13
+
14
+ Returns:
15
+ Union[str, List[str]]: モード
16
+ """
17
+ return 'web'
18
+
19
+ def get_cmd(self):
20
+ """
21
+ この機能のコマンドを返します
22
+
23
+ Returns:
24
+ str: コマンド
25
+ """
26
+ return 'group_list'
27
+
28
+ def get_option(self):
29
+ """
30
+ この機能のオプションを返します
31
+
32
+ Returns:
33
+ Dict[str, Any]: オプション
34
+ """
35
+ return dict(
36
+ use_redis=self.USE_REDIS_MEIGHT, nouse_webmode=False,
37
+ description_ja="Webモードのグループー一覧を取得します。",
38
+ description_en="Get a list of users in Web mode.",
39
+ choice=[
40
+ dict(opt="group_name", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
41
+ description_ja="グループ名を指定して取得します。省略した時は全てのグループを取得します。",
42
+ description_en="Retrieved by specifying a group name. If omitted, all groups are retrieved."),
43
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None, fileio="in",
44
+ description_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
45
+ description_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
46
+ dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
47
+ description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力をConsole logに出力します。",
48
+ description_en="Available only in GUI mode. Outputs standard output during command execution to Console log."),
49
+ dict(opt="capture_stdout", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
50
+ description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力をキャプチャーし、実行結果画面に表示します。",
51
+ description_en="Available only in GUI mode. Captures standard output during command execution and displays it on the execution result screen."),
52
+ dict(opt="capture_maxsize", type=Options.T_INT, default=self.DEFAULT_CAPTURE_MAXSIZE, required=False, multi=False, hide=True, choice=None,
53
+ description_ja="GUIモードでのみ使用可能です。コマンド実行時の標準出力の最大キャプチャーサイズを指定します。",
54
+ description_en="Available only in GUI mode. Specifies the maximum capture size of standard output when executing commands."),
55
+ ]
56
+ )
57
+
58
+ def apprun(self, logger:logging.Logger, args:argparse.Namespace, tm:float, pf:List[Dict[str, float]]=[]) -> Tuple[int, Dict[str, Any], Any]:
59
+ """
60
+ この機能の実行を行います
61
+
62
+ Args:
63
+ logger (logging.Logger): ロガー
64
+ args (argparse.Namespace): 引数
65
+ tm (float): 実行開始時間
66
+ pf (List[Dict[str, float]]): 呼出元のパフォーマンス情報
67
+
68
+ Returns:
69
+ Tuple[int, Dict[str, Any], Any]: 終了コード, 結果, オブジェクト
70
+ """
71
+ if args.data is None:
72
+ msg = dict(warn=f"Please specify the --data option.")
73
+ common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
74
+ return self.RESP_WARN, msg, None
75
+ w = None
76
+ try:
77
+ w = web.Web(logger, self.default_data, appcls=self.appcls, ver=self.ver,
78
+ redis_host=self.default_host, redis_port=self.default_port, redis_password=self.default_pass, svname=self.default_svname,
79
+ signin_file=args.signin_file)
80
+ groups = w.group_list(args.group_name)
81
+ msg = dict(success=groups)
82
+ common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
83
+ return self.RESP_SUCCESS, msg, w
84
+ except Exception as e:
85
+ msg = dict(warn=f"{e}")
86
+ common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
87
+ return self.RESP_WARN, msg, w