sima-cli 2.1.9__tar.gz → 2.1.10__tar.gz

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.
Files changed (144) hide show
  1. sima_cli-2.1.10/PKG-INFO +197 -0
  2. sima_cli-2.1.10/README.md +163 -0
  3. {sima_cli-2.1.9 → sima_cli-2.1.10}/pyproject.toml +1 -1
  4. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/__version__.py +1 -1
  5. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/cli.py +53 -8
  6. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/sdk/commands.py +64 -5
  7. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/sdk/install.py +94 -6
  8. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/sdk/neat.py +34 -3
  9. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/sdk/preinstall.py +215 -24
  10. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/sdk/utils.py +314 -70
  11. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/update/elxr.py +7 -2
  12. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/update/updater.py +12 -2
  13. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/pkg_update_check.py +52 -10
  14. sima_cli-2.1.10/sima_cli.egg-info/PKG-INFO +197 -0
  15. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli.egg-info/SOURCES.txt +2 -0
  16. sima_cli-2.1.10/tests/unit/test_cli_update.py +25 -0
  17. sima_cli-2.1.10/tests/unit/test_cli_update_rerun.py +20 -0
  18. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_elxr_update.py +70 -0
  19. sima_cli-2.1.10/tests/unit/test_pkg_update_check.py +189 -0
  20. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_sdk_image_detection.py +505 -31
  21. sima_cli-2.1.10/tests/unit/test_sdk_preinstall.py +187 -0
  22. sima_cli-2.1.9/PKG-INFO +0 -670
  23. sima_cli-2.1.9/README.md +0 -636
  24. sima_cli-2.1.9/sima_cli.egg-info/PKG-INFO +0 -670
  25. sima_cli-2.1.9/tests/unit/test_pkg_update_check.py +0 -107
  26. sima_cli-2.1.9/tests/unit/test_sdk_preinstall.py +0 -73
  27. {sima_cli-2.1.9 → sima_cli-2.1.10}/LICENSE +0 -0
  28. {sima_cli-2.1.9 → sima_cli-2.1.10}/MANIFEST.in +0 -0
  29. {sima_cli-2.1.9 → sima_cli-2.1.10}/requirements.txt +0 -0
  30. {sima_cli-2.1.9 → sima_cli-2.1.10}/setup.cfg +0 -0
  31. {sima_cli-2.1.9 → sima_cli-2.1.10}/setup.py +0 -0
  32. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/__init__.py +0 -0
  33. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/__main__.py +0 -0
  34. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/app_zoo/__init__.py +0 -0
  35. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/app_zoo/app.py +0 -0
  36. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/app_zoo/commands.py +0 -0
  37. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/auth/__init__.py +0 -0
  38. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/auth/auth0.py +0 -0
  39. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/auth/devportal.py +0 -0
  40. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/auth/login.py +0 -0
  41. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/auth/oauth.py +0 -0
  42. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/data/__init__.py +0 -0
  43. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/data/resources_internal.yaml +0 -0
  44. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/data/resources_public.yaml +0 -0
  45. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/deploy_only/__init__.py +0 -0
  46. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/deploy_only/device/__init__.py +0 -0
  47. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/deploy_only/device/commands.py +0 -0
  48. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/deploy_only/mpk/__init__.py +0 -0
  49. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/deploy_only/mpk/commands.py +0 -0
  50. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/discover/__init__.py +0 -0
  51. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/discover/discover.py +0 -0
  52. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/discover/linuxll.py +0 -0
  53. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/download/__init__.py +0 -0
  54. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/download/downloader.py +0 -0
  55. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/install/__init__.py +0 -0
  56. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/install/github_assets.py +0 -0
  57. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/install/hostdriver.py +0 -0
  58. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/install/metadata_info.py +0 -0
  59. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/install/metadata_installer.py +0 -0
  60. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/install/metadata_validator.py +0 -0
  61. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/install/optiview.py +0 -0
  62. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/install/package_builder.py +0 -0
  63. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/install/palette.py +0 -0
  64. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/install/registry.py +0 -0
  65. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/mla/__init__.py +0 -0
  66. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/mla/meminfo.py +0 -0
  67. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/model_zoo/__init__.py +0 -0
  68. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/model_zoo/model.py +0 -0
  69. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/network/__init__.py +0 -0
  70. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/network/network.py +0 -0
  71. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/playbooks/__init__.py +0 -0
  72. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/playbooks/commands.py +0 -0
  73. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/playbooks/manager.py +0 -0
  74. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/sdk/__init__.py +0 -0
  75. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/sdk/cmdexec.py +0 -0
  76. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/sdk/config.py +0 -0
  77. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/sdk/linux_shared_network.py +0 -0
  78. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/sdk/requirements.json +0 -0
  79. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/sdk/script.py +0 -0
  80. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/sdk/stop.py +0 -0
  81. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/sdk/uninstall.py +0 -0
  82. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/serial/__init__.py +0 -0
  83. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/serial/serial.py +0 -0
  84. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/storage/__init__.py +0 -0
  85. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/storage/nvme.py +0 -0
  86. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/storage/sdcard.py +0 -0
  87. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/update/__init__.py +0 -0
  88. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/update/bmaptool.py +0 -0
  89. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/update/bootimg.py +0 -0
  90. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/update/cleanlog.py +0 -0
  91. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/update/local.py +0 -0
  92. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/update/netboot.py +0 -0
  93. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/update/query.py +0 -0
  94. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/update/remote.py +0 -0
  95. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/upgrade/__init__.py +0 -0
  96. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/upgrade/selfupdate.py +0 -0
  97. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/__init__.py +0 -0
  98. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/api_common.py +0 -0
  99. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/artifactory.py +0 -0
  100. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/common.py +0 -0
  101. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/config.py +0 -0
  102. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/config_loader.py +0 -0
  103. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/container_registries.py +0 -0
  104. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/device_api.py +0 -0
  105. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/disk.py +0 -0
  106. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/docker.py +0 -0
  107. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/env.py +0 -0
  108. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/errors.py +0 -0
  109. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/mpk_api.py +0 -0
  110. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/net.py +0 -0
  111. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/network.py +0 -0
  112. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/pcie.py +0 -0
  113. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/serializers.py +0 -0
  114. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/services.py +0 -0
  115. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/utils/tag.py +0 -0
  116. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/vulcan/__init__.py +0 -0
  117. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/vulcan/artifacts.py +0 -0
  118. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli/vulcan/commands.py +0 -0
  119. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli.egg-info/dependency_links.txt +0 -0
  120. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli.egg-info/entry_points.txt +0 -0
  121. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli.egg-info/requires.txt +0 -0
  122. {sima_cli-2.1.9 → sima_cli-2.1.10}/sima_cli.egg-info/top_level.txt +0 -0
  123. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/__init__.py +0 -0
  124. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/e2e/__init__.py +0 -0
  125. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/__init__.py +0 -0
  126. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_app_zoo.py +0 -0
  127. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_auth.py +0 -0
  128. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_auth0.py +0 -0
  129. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_cli.py +0 -0
  130. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_cli_stdio.py +0 -0
  131. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_docker_utils.py +0 -0
  132. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_download.py +0 -0
  133. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_firmware.py +0 -0
  134. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_install_stub.py +0 -0
  135. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_metadata_installer.py +0 -0
  136. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_model_zoo.py +0 -0
  137. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_netboot.py +0 -0
  138. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_package_builder.py +0 -0
  139. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_sdk_uninstall.py +0 -0
  140. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_selfupdate.py +0 -0
  141. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_skills_commands.py +0 -0
  142. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_skills_manager.py +0 -0
  143. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_utils.py +0 -0
  144. {sima_cli-2.1.9 → sima_cli-2.1.10}/tests/unit/test_vulcan.py +0 -0
@@ -0,0 +1,197 @@
1
+ Metadata-Version: 2.4
2
+ Name: sima-cli
3
+ Version: 2.1.10
4
+ Summary: CLI tool for SiMa Developer Portal to download models, firmware, and apps.
5
+ Home-page: https://developer.sima.ai/
6
+ Author: SiMa.ai
7
+ Author-email: "Sima.ai" <support@sima.ai>
8
+ License: MIT
9
+ Project-URL: Homepage, https://developer.sima.ai/
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Topic :: Software Development :: Build Tools
15
+ Classifier: Environment :: Console
16
+ Requires-Python: >=3.8
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: click>=8.0
20
+ Requires-Dist: requests<3.0,>=2.32.4
21
+ Requires-Dist: tqdm>=4.64
22
+ Requires-Dist: pyyaml>=6.0
23
+ Requires-Dist: paramiko>=3.5.1
24
+ Requires-Dist: plotext==5.3.2
25
+ Requires-Dist: rich==14.0.0
26
+ Requires-Dist: InquirerPy==0.3.4
27
+ Requires-Dist: tftpy==0.8.6
28
+ Requires-Dist: psutil==7.0.0
29
+ Requires-Dist: huggingface-hub<1.0,>=0.34.0
30
+ Requires-Dist: tabulate==0.9.0
31
+ Dynamic: author
32
+ Dynamic: license-file
33
+ Dynamic: requires-python
34
+
35
+ # sima-cli - SiMa Developer Portal CLI Tool
36
+
37
+ [![Python 3.8](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.8&label=python%203.8)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
38
+ [![Python 3.9](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.9&label=python%203.9)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
39
+ [![Python 3.10](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.10&label=python%203.10)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
40
+ [![Python 3.11](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.11&label=python%203.11)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
41
+ [![Python 3.12](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.12&label=python%203.12)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
42
+ [![Python 3.13](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.13&label=python%203.13)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
43
+ [![Python 3.14](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.14&label=python%203.14)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
44
+ [![E2E macOS](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=E2E%20Install%20(macOS%20CLI%20only)&label=e2e%20macOS&logo=apple&logoColor=white)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
45
+ [![E2E Windows](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=E2E%20Install%20(Windows)&label=e2e%20Windows&logo=windows&logoColor=white)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
46
+ [![E2E Ubuntu x86](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=E2E%20Install%20(Ubuntu%20x86)&label=e2e%20Ubuntu%20x86&logo=ubuntu&logoColor=white)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
47
+ [![E2E Ubuntu ARM64](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=E2E%20Install%20(Ubuntu%20ARM64)&label=e2e%20Ubuntu%20ARM64&logo=ubuntu&logoColor=white)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
48
+
49
+ `sima-cli` is the command-line interface for SiMa developer workflows. It handles authentication, SDK container setup, DevKit updates, package installation, artifact downloads, Model Zoo/App Zoo access, and related development utilities.
50
+
51
+ ## Documentation
52
+
53
+ The full command reference is generated as Markdown under [docs/sima-cli](docs/sima-cli/index.md).
54
+
55
+ Use the generated docs for detailed options, arguments, subcommands, and full help text:
56
+
57
+ - [Complete command reference](docs/sima-cli/index.md)
58
+ - [Top-level command help](docs/sima-cli/commands/sima-cli.md)
59
+
60
+ ## Installation
61
+
62
+ Install the latest `main` build:
63
+
64
+ ```bash
65
+ curl -fsSL https://artifacts.sima-neat.com/tools/sima-cli-install.py -o sima-cli-install.py
66
+ python3 sima-cli-install.py main latest
67
+ ```
68
+
69
+ Install interactively:
70
+
71
+ ```bash
72
+ python3 sima-cli-install.py
73
+ ```
74
+
75
+ Install a specific branch or release:
76
+
77
+ ```bash
78
+ python3 sima-cli-install.py feature/my-branch latest
79
+ python3 sima-cli-install.py v2.1.6 latest
80
+ ```
81
+
82
+ On Windows PowerShell:
83
+
84
+ ```powershell
85
+ Invoke-WebRequest https://artifacts.sima-neat.com/tools/sima-cli-install.py -OutFile sima-cli-install.py
86
+ python .\sima-cli-install.py main latest
87
+ ```
88
+
89
+ Public PyPI releases can also be installed directly:
90
+
91
+ ```bash
92
+ pip install sima-cli
93
+ ```
94
+
95
+ ## Quick Start
96
+
97
+ ```bash
98
+ sima-cli --help
99
+ sima-cli login
100
+ sima-cli version
101
+ ```
102
+
103
+ Use `--internal` or `SIMA_CLI_INTERNAL=1` when internal Artifactory resources are required:
104
+
105
+ ```bash
106
+ sima-cli --internal login
107
+ SIMA_CLI_INTERNAL=1 sima-cli install -v 2.1.1 sdk-extensions/model
108
+ ```
109
+
110
+ ## Common Workflows
111
+
112
+ Set up SDK containers:
113
+
114
+ ```bash
115
+ sima-cli sdk setup
116
+ sima-cli sdk neat
117
+ ```
118
+
119
+ Install a package from metadata:
120
+
121
+ ```bash
122
+ sima-cli install -v 2.1.1 sdk-extensions/model
123
+ ```
124
+
125
+ Download or install Neat artifacts:
126
+
127
+ ```bash
128
+ sima-cli neat download core main
129
+ sima-cli install --neat core main
130
+ ```
131
+
132
+ Update a DevKit:
133
+
134
+ ```bash
135
+ sima-cli update -v 2.1.1 -y
136
+ ```
137
+
138
+ Explore Model Zoo and App Zoo content:
139
+
140
+ ```bash
141
+ sima-cli modelzoo list
142
+ sima-cli appzoo list
143
+ ```
144
+
145
+ ## Top-Level Commands
146
+
147
+ | Command | Description | Docs |
148
+ | --- | --- | --- |
149
+ | `sima-cli appzoo` | Access sample apps from the App Zoo. | [docs](docs/sima-cli/commands/sima-cli-appzoo.md) |
150
+ | `sima-cli bootimg` | Prepare a bootable image for the SiMa DevKit. | [docs](docs/sima-cli/commands/sima-cli-bootimg.md) |
151
+ | `sima-cli device` | Discover nearby SiMa.ai devices on the local network. | [docs](docs/sima-cli/commands/sima-cli-device.md) |
152
+ | `sima-cli download` | Download a file or folder from a URL. | [docs](docs/sima-cli/commands/sima-cli-download.md) |
153
+ | `sima-cli install` | Install SiMa packages from metadata. | [docs](docs/sima-cli/commands/sima-cli-install.md) |
154
+ | `sima-cli login` | Authenticate with the SiMa Developer Portal. | [docs](docs/sima-cli/commands/sima-cli-login.md) |
155
+ | `sima-cli logout` | Remove cached credentials and config files. | [docs](docs/sima-cli/commands/sima-cli-logout.md) |
156
+ | `sima-cli mla` | Machine Learning Accelerator utilities. | [docs](docs/sima-cli/commands/sima-cli-mla.md) |
157
+ | `sima-cli modelzoo` | Access models from the Model Zoo. | [docs](docs/sima-cli/commands/sima-cli-modelzoo.md) |
158
+ | `sima-cli neat` | Discover, download, and install Neat build artifacts. | [docs](docs/sima-cli/commands/sima-cli-neat.md) |
159
+ | `sima-cli network` | Configure DevKit network settings. | [docs](docs/sima-cli/commands/sima-cli-network.md) |
160
+ | `sima-cli nvme` | Perform NVMe operations on the Modalix DevKit. | [docs](docs/sima-cli/commands/sima-cli-nvme.md) |
161
+ | `sima-cli packages` | Manage the local sima-cli package registry. | [docs](docs/sima-cli/commands/sima-cli-packages.md) |
162
+ | `sima-cli playbooks` | Install and manage coding-agent playbooks. | [docs](docs/sima-cli/commands/sima-cli-playbooks.md) |
163
+ | `sima-cli sdcard` | Prepare SD card storage. | [docs](docs/sima-cli/commands/sima-cli-sdcard.md) |
164
+ | `sima-cli sdk` | Manage and launch SDK container environments. | [docs](docs/sima-cli/commands/sima-cli-sdk.md) |
165
+ | `sima-cli selfupdate` | Update sima-cli manually. | [docs](docs/sima-cli/commands/sima-cli-selfupdate.md) |
166
+ | `sima-cli serial` | Connect to the UART serial console of a DevKit. | [docs](docs/sima-cli/commands/sima-cli-serial.md) |
167
+ | `sima-cli update` | Update a SiMa DevKit or remote device. | [docs](docs/sima-cli/commands/sima-cli-update.md) |
168
+ | `sima-cli version` | Show the installed CLI version. | [docs](docs/sima-cli/commands/sima-cli-version.md) |
169
+
170
+ ## Development
171
+
172
+ Install development dependencies and run tests:
173
+
174
+ ```bash
175
+ pip install -e ".[dev]"
176
+ python -m pytest tests/unit
177
+ ```
178
+
179
+ Regenerate CLI documentation:
180
+
181
+ ```bash
182
+ python scripts/generate_cli_markdown_docs.py
183
+ ```
184
+
185
+ `build.sh` also regenerates the command docs before building the package.
186
+
187
+ ## Requirements
188
+
189
+ - Python 3.8 or newer
190
+ - Docker for SDK container workflows
191
+ - DevKit connectivity for device update, serial, network, and boot-image workflows
192
+
193
+ For command-specific prerequisites, see the generated [command reference](docs/sima-cli/index.md).
194
+
195
+ ## Support
196
+
197
+ For issues and feature requests, use the sima-cli GitHub repository or contact the SiMa.ai development team.
@@ -0,0 +1,163 @@
1
+ # sima-cli - SiMa Developer Portal CLI Tool
2
+
3
+ [![Python 3.8](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.8&label=python%203.8)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
4
+ [![Python 3.9](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.9&label=python%203.9)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
5
+ [![Python 3.10](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.10&label=python%203.10)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
6
+ [![Python 3.11](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.11&label=python%203.11)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
7
+ [![Python 3.12](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.12&label=python%203.12)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
8
+ [![Python 3.13](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.13&label=python%203.13)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
9
+ [![Python 3.14](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.14&label=python%203.14)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
10
+ [![E2E macOS](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=E2E%20Install%20(macOS%20CLI%20only)&label=e2e%20macOS&logo=apple&logoColor=white)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
11
+ [![E2E Windows](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=E2E%20Install%20(Windows)&label=e2e%20Windows&logo=windows&logoColor=white)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
12
+ [![E2E Ubuntu x86](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=E2E%20Install%20(Ubuntu%20x86)&label=e2e%20Ubuntu%20x86&logo=ubuntu&logoColor=white)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
13
+ [![E2E Ubuntu ARM64](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=E2E%20Install%20(Ubuntu%20ARM64)&label=e2e%20Ubuntu%20ARM64&logo=ubuntu&logoColor=white)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
14
+
15
+ `sima-cli` is the command-line interface for SiMa developer workflows. It handles authentication, SDK container setup, DevKit updates, package installation, artifact downloads, Model Zoo/App Zoo access, and related development utilities.
16
+
17
+ ## Documentation
18
+
19
+ The full command reference is generated as Markdown under [docs/sima-cli](docs/sima-cli/index.md).
20
+
21
+ Use the generated docs for detailed options, arguments, subcommands, and full help text:
22
+
23
+ - [Complete command reference](docs/sima-cli/index.md)
24
+ - [Top-level command help](docs/sima-cli/commands/sima-cli.md)
25
+
26
+ ## Installation
27
+
28
+ Install the latest `main` build:
29
+
30
+ ```bash
31
+ curl -fsSL https://artifacts.sima-neat.com/tools/sima-cli-install.py -o sima-cli-install.py
32
+ python3 sima-cli-install.py main latest
33
+ ```
34
+
35
+ Install interactively:
36
+
37
+ ```bash
38
+ python3 sima-cli-install.py
39
+ ```
40
+
41
+ Install a specific branch or release:
42
+
43
+ ```bash
44
+ python3 sima-cli-install.py feature/my-branch latest
45
+ python3 sima-cli-install.py v2.1.6 latest
46
+ ```
47
+
48
+ On Windows PowerShell:
49
+
50
+ ```powershell
51
+ Invoke-WebRequest https://artifacts.sima-neat.com/tools/sima-cli-install.py -OutFile sima-cli-install.py
52
+ python .\sima-cli-install.py main latest
53
+ ```
54
+
55
+ Public PyPI releases can also be installed directly:
56
+
57
+ ```bash
58
+ pip install sima-cli
59
+ ```
60
+
61
+ ## Quick Start
62
+
63
+ ```bash
64
+ sima-cli --help
65
+ sima-cli login
66
+ sima-cli version
67
+ ```
68
+
69
+ Use `--internal` or `SIMA_CLI_INTERNAL=1` when internal Artifactory resources are required:
70
+
71
+ ```bash
72
+ sima-cli --internal login
73
+ SIMA_CLI_INTERNAL=1 sima-cli install -v 2.1.1 sdk-extensions/model
74
+ ```
75
+
76
+ ## Common Workflows
77
+
78
+ Set up SDK containers:
79
+
80
+ ```bash
81
+ sima-cli sdk setup
82
+ sima-cli sdk neat
83
+ ```
84
+
85
+ Install a package from metadata:
86
+
87
+ ```bash
88
+ sima-cli install -v 2.1.1 sdk-extensions/model
89
+ ```
90
+
91
+ Download or install Neat artifacts:
92
+
93
+ ```bash
94
+ sima-cli neat download core main
95
+ sima-cli install --neat core main
96
+ ```
97
+
98
+ Update a DevKit:
99
+
100
+ ```bash
101
+ sima-cli update -v 2.1.1 -y
102
+ ```
103
+
104
+ Explore Model Zoo and App Zoo content:
105
+
106
+ ```bash
107
+ sima-cli modelzoo list
108
+ sima-cli appzoo list
109
+ ```
110
+
111
+ ## Top-Level Commands
112
+
113
+ | Command | Description | Docs |
114
+ | --- | --- | --- |
115
+ | `sima-cli appzoo` | Access sample apps from the App Zoo. | [docs](docs/sima-cli/commands/sima-cli-appzoo.md) |
116
+ | `sima-cli bootimg` | Prepare a bootable image for the SiMa DevKit. | [docs](docs/sima-cli/commands/sima-cli-bootimg.md) |
117
+ | `sima-cli device` | Discover nearby SiMa.ai devices on the local network. | [docs](docs/sima-cli/commands/sima-cli-device.md) |
118
+ | `sima-cli download` | Download a file or folder from a URL. | [docs](docs/sima-cli/commands/sima-cli-download.md) |
119
+ | `sima-cli install` | Install SiMa packages from metadata. | [docs](docs/sima-cli/commands/sima-cli-install.md) |
120
+ | `sima-cli login` | Authenticate with the SiMa Developer Portal. | [docs](docs/sima-cli/commands/sima-cli-login.md) |
121
+ | `sima-cli logout` | Remove cached credentials and config files. | [docs](docs/sima-cli/commands/sima-cli-logout.md) |
122
+ | `sima-cli mla` | Machine Learning Accelerator utilities. | [docs](docs/sima-cli/commands/sima-cli-mla.md) |
123
+ | `sima-cli modelzoo` | Access models from the Model Zoo. | [docs](docs/sima-cli/commands/sima-cli-modelzoo.md) |
124
+ | `sima-cli neat` | Discover, download, and install Neat build artifacts. | [docs](docs/sima-cli/commands/sima-cli-neat.md) |
125
+ | `sima-cli network` | Configure DevKit network settings. | [docs](docs/sima-cli/commands/sima-cli-network.md) |
126
+ | `sima-cli nvme` | Perform NVMe operations on the Modalix DevKit. | [docs](docs/sima-cli/commands/sima-cli-nvme.md) |
127
+ | `sima-cli packages` | Manage the local sima-cli package registry. | [docs](docs/sima-cli/commands/sima-cli-packages.md) |
128
+ | `sima-cli playbooks` | Install and manage coding-agent playbooks. | [docs](docs/sima-cli/commands/sima-cli-playbooks.md) |
129
+ | `sima-cli sdcard` | Prepare SD card storage. | [docs](docs/sima-cli/commands/sima-cli-sdcard.md) |
130
+ | `sima-cli sdk` | Manage and launch SDK container environments. | [docs](docs/sima-cli/commands/sima-cli-sdk.md) |
131
+ | `sima-cli selfupdate` | Update sima-cli manually. | [docs](docs/sima-cli/commands/sima-cli-selfupdate.md) |
132
+ | `sima-cli serial` | Connect to the UART serial console of a DevKit. | [docs](docs/sima-cli/commands/sima-cli-serial.md) |
133
+ | `sima-cli update` | Update a SiMa DevKit or remote device. | [docs](docs/sima-cli/commands/sima-cli-update.md) |
134
+ | `sima-cli version` | Show the installed CLI version. | [docs](docs/sima-cli/commands/sima-cli-version.md) |
135
+
136
+ ## Development
137
+
138
+ Install development dependencies and run tests:
139
+
140
+ ```bash
141
+ pip install -e ".[dev]"
142
+ python -m pytest tests/unit
143
+ ```
144
+
145
+ Regenerate CLI documentation:
146
+
147
+ ```bash
148
+ python scripts/generate_cli_markdown_docs.py
149
+ ```
150
+
151
+ `build.sh` also regenerates the command docs before building the package.
152
+
153
+ ## Requirements
154
+
155
+ - Python 3.8 or newer
156
+ - Docker for SDK container workflows
157
+ - DevKit connectivity for device update, serial, network, and boot-image workflows
158
+
159
+ For command-specific prerequisites, see the generated [command reference](docs/sima-cli/index.md).
160
+
161
+ ## Support
162
+
163
+ For issues and feature requests, use the sima-cli GitHub repository or contact the SiMa.ai development team.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "sima-cli"
7
- version = "2.1.9"
7
+ version = "2.1.10"
8
8
  description = "CLI tool for SiMa Developer Portal to download models, firmware, and apps."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
@@ -1,2 +1,2 @@
1
1
  # sima_cli/__version__.py
2
- __version__ = "2.1.9"
2
+ __version__ = "2.1.10"
@@ -50,6 +50,35 @@ def _configure_stdio_errors() -> None:
50
50
  continue
51
51
 
52
52
 
53
+ def _command_name_from_argv(argv):
54
+ for arg in argv[1:]:
55
+ if arg in ("-i", "--internal"):
56
+ continue
57
+ if arg.startswith("-"):
58
+ continue
59
+ return arg
60
+ return None
61
+
62
+
63
+ def _should_rerun_after_update(argv):
64
+ args = argv[1:]
65
+ if not args:
66
+ return False
67
+ if any(arg in ("-h", "--help", "-?") for arg in args):
68
+ return False
69
+
70
+ command_name = _command_name_from_argv(argv)
71
+ return command_name not in (None, "selfupdate", "version")
72
+
73
+
74
+ def _rerun_current_command() -> None:
75
+ env = os.environ.copy()
76
+ env["SIMA_CLI_CHECK_FOR_UPDATE"] = "0"
77
+ cmd = [sys.executable, "-m", "sima_cli", *sys.argv[1:]]
78
+ click.secho("✅ Update complete. Re-running the original command with the current sima-cli.", fg="green")
79
+ os.execvpe(sys.executable, cmd, env)
80
+
81
+
53
82
  # Entry point for the CLI tool using Click's command group decorator
54
83
  @click.group(context_settings=dict(help_option_names=["-h", "--help", "-?"], max_content_width=120))
55
84
  @click.option('-i', '--internal', is_flag=True, help="Use internal Artifactory resources, Authorized Sima employees only")
@@ -62,7 +91,8 @@ def main(ctx, internal):
62
91
  --internal Use internal Artifactory resources (can also be set via env variable SIMA_CLI_INTERNAL=1)
63
92
  """
64
93
  _configure_stdio_errors()
65
- check_for_update('sima-cli')
94
+ if check_for_update('sima-cli') and _should_rerun_after_update(sys.argv):
95
+ _rerun_current_command()
66
96
  ctx.ensure_object(dict)
67
97
 
68
98
  os.makedirs(os.path.dirname(CONFIG_PATH), exist_ok=True)
@@ -228,8 +258,14 @@ def download(ctx, url, dest):
228
258
  default=False,
229
259
  help="Only update tRoot and not the root file system, compatible with Yocto system only, used for Yocto to eLxr conversion."
230
260
  )
261
+ @click.option(
262
+ "--dryrun",
263
+ is_flag=True,
264
+ default=False,
265
+ help="For ELXR updates only, validate the update path and print the simaai-ota command without running it."
266
+ )
231
267
  @click.pass_context
232
- def update(ctx, version_or_url, version_option, ip, yes, passwd, flavor, troot_only):
268
+ def update(ctx, version_or_url, version_option, ip, yes, passwd, flavor, troot_only, dryrun):
233
269
  """
234
270
  Update the software on a SiMa DevKit or remote SiMa device.
235
271
 
@@ -287,6 +323,10 @@ def update(ctx, version_or_url, version_option, ip, yes, passwd, flavor, troot_o
287
323
 
288
324
  sima-cli update -v 1.7.0 -y
289
325
 
326
+ # Validate ELXR update path without running simaai-ota
327
+
328
+ sima-cli update --dryrun
329
+
290
330
  # Provide root password for remote updates
291
331
 
292
332
  sima-cli update --ip 192.168.6.5 --passwd root
@@ -294,14 +334,18 @@ def update(ctx, version_or_url, version_option, ip, yes, passwd, flavor, troot_o
294
334
  """
295
335
  # Prioritize explicit --version option over positional argument
296
336
  version_or_url = version_option or version_or_url
337
+ is_elxr = is_devkit_running_elxr()
338
+
339
+ if dryrun and not is_elxr:
340
+ raise click.ClickException("--dryrun is only supported when running update on an ELXR devkit.")
297
341
 
298
342
  # Resolve the version or tag (GA/Beta/Alpha/QA) if not on eLxr
299
343
  # On eLxr always use latest (no version) or explicit version string
300
344
 
301
- if not is_devkit_running_elxr():
345
+ if not is_elxr:
302
346
  version_or_url = resolve_version(version_or_url)
303
347
 
304
- if is_devkit_running_elxr() and troot_only:
348
+ if is_elxr and troot_only:
305
349
  click.secho("⚠️ Running update on eLxr with troot_only flag is not supported, this setting is ignored..", fg='yellow')
306
350
 
307
351
  click.echo(f"➡️ Updating with {version_or_url}")
@@ -315,7 +359,8 @@ def update(ctx, version_or_url, version_option, ip, yes, passwd, flavor, troot_o
315
359
  passwd=passwd,
316
360
  auto_confirm=yes,
317
361
  flavor=flavor,
318
- troot_only=troot_only
362
+ troot_only=troot_only,
363
+ dryrun=dryrun,
319
364
  )
320
365
 
321
366
  # ----------------------
@@ -716,7 +761,7 @@ def network_cmd(ctx):
716
761
  # ----------------------
717
762
  # NVME Subcommands
718
763
  # ----------------------
719
- NVME_OPERATIONS = {"format", "remount"}
764
+ NVME_OPERATIONS = ("format", "remount")
720
765
  @main.command(name="nvme")
721
766
  @click.argument("operation", type=click.Choice(NVME_OPERATIONS, case_sensitive=False))
722
767
  @click.pass_context
@@ -758,9 +803,9 @@ def nvme_cmd(ctx, operation):
758
803
  # ----------------------
759
804
  # NVME Subcommands
760
805
  # ----------------------
761
- NVME_OPERATIONS = {"format"}
806
+ SDCARD_OPERATIONS = ("format",)
762
807
  @main.command(name="sdcard")
763
- @click.argument("operation", type=click.Choice(NVME_OPERATIONS, case_sensitive=False))
808
+ @click.argument("operation", type=click.Choice(SDCARD_OPERATIONS, case_sensitive=False))
764
809
  @click.pass_context
765
810
  def sdcard_cmd(ctx, operation):
766
811
  """
@@ -296,8 +296,19 @@ def remove(ctx, sdk, yes):
296
296
  @click.argument("cmd", nargs=-1, type=click.UNPROCESSED)
297
297
  @click.pass_context
298
298
  def mpk(ctx, cmd):
299
- """Access MPK CLI toolset container for managing and building pipelines along with the device manager.
299
+ """
300
+ Access MPK CLI toolset container for managing and building pipelines along with the device manager.
300
301
  It also includes the plugins zoo and the Performance Estimator tool.
302
+
303
+ If CMD is provided, all remaining tokens are executed inside the matching
304
+ running container with bash -lc. If CMD is omitted, sima-cli opens an
305
+ interactive login shell.
306
+
307
+ \b
308
+ Examples:
309
+ sima-cli sdk mpk
310
+ sima-cli sdk mpk mpk --help
311
+ sima-cli sdk mpk "mpk compile --help"
301
312
  """
302
313
  launch_sdk_tool("mpk", cmd, ctx)
303
314
 
@@ -309,7 +320,19 @@ def mpk(ctx, cmd):
309
320
  @click.argument("cmd", nargs=-1, type=click.UNPROCESSED)
310
321
  @click.pass_context
311
322
  def model(ctx, cmd):
312
- """Launch the Model SDK tool environment."""
323
+ """
324
+ Launch the Model SDK tool environment.
325
+
326
+ If CMD is provided, all remaining tokens are executed inside the matching
327
+ running container with bash -lc. If CMD is omitted, sima-cli opens an
328
+ interactive login shell.
329
+
330
+ \b
331
+ Examples:
332
+ sima-cli sdk model
333
+ sima-cli sdk model python --version
334
+ sima-cli sdk model "python script.py --flag"
335
+ """
313
336
  launch_sdk_tool("model", cmd, ctx)
314
337
 
315
338
 
@@ -320,7 +343,19 @@ def model(ctx, cmd):
320
343
  @click.argument("cmd", nargs=-1, type=click.UNPROCESSED)
321
344
  @click.pass_context
322
345
  def yocto(ctx, cmd):
323
- """Launch the Yocto SDK tool environment."""
346
+ """
347
+ Launch the Yocto SDK tool environment.
348
+
349
+ If CMD is provided, all remaining tokens are executed inside the matching
350
+ running container with bash -lc. If CMD is omitted, sima-cli opens an
351
+ interactive login shell.
352
+
353
+ \b
354
+ Examples:
355
+ sima-cli sdk yocto
356
+ sima-cli sdk yocto bitbake --version
357
+ sima-cli sdk yocto "bitbake core-image-minimal"
358
+ """
324
359
  launch_sdk_tool("yocto", cmd, ctx)
325
360
 
326
361
 
@@ -331,7 +366,19 @@ def yocto(ctx, cmd):
331
366
  @click.argument("cmd", nargs=-1, type=click.UNPROCESSED)
332
367
  @click.pass_context
333
368
  def neat(ctx, cmd):
334
- """Launch the Neat SDK tool environment."""
369
+ """
370
+ Launch the Neat SDK tool environment.
371
+
372
+ If CMD is provided, all remaining tokens are executed inside the matching
373
+ running container with bash -lc. If CMD is omitted, sima-cli opens an
374
+ interactive login shell.
375
+
376
+ \b
377
+ Examples:
378
+ sima-cli sdk neat
379
+ sima-cli sdk neat python --version
380
+ sima-cli sdk neat "python app.py --config config.json"
381
+ """
335
382
  launch_sdk_tool("neat", cmd, ctx)
336
383
 
337
384
 
@@ -342,7 +389,19 @@ def neat(ctx, cmd):
342
389
  @click.argument("cmd", nargs=-1, type=click.UNPROCESSED)
343
390
  @click.pass_context
344
391
  def elxr(ctx, cmd):
345
- """Launch the eLxr SDK tool environment."""
392
+ """
393
+ Launch the eLxr SDK tool environment.
394
+
395
+ If CMD is provided, all remaining tokens are executed inside the matching
396
+ running container with bash -lc. If CMD is omitted, sima-cli opens an
397
+ interactive login shell.
398
+
399
+ \b
400
+ Examples:
401
+ sima-cli sdk elxr
402
+ sima-cli sdk elxr uname -a
403
+ sima-cli sdk elxr "source /opt/bin/simaai-init-build-env modalix && bitbake --version"
404
+ """
346
405
  launch_sdk_tool("elxr", cmd, ctx)
347
406
 
348
407