pw_{build,module}: Allow nesting Pigweed modules in subdirectories

Update pw module command to:
- Allow re-running with user overwrite prompt input
- Updated message output
- Handle modules names nested in subdirectories
- Fix comma separated list error. This may have broken in the Python
  3.10 update but the error at HEAD was:

  if action.choices is not None and value not in action.choices:
  TypeError: unhashable type: 'list'

Change-Id: I615c816a308ea0e47313704f91f0e6c06705a9b6
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201114
Reviewed-by: Taylor Cramer <cramertj@google.com>
Commit-Queue: Anthony DiGirolamo <tonymd@google.com>
5 files changed
tree: 7d389f49ff74955385c37bec394e0c98d57df9b3
  1. .allstar/
  2. .vscode/
  3. build_overrides/
  4. docker/
  5. docs/
  6. kudzu/
  7. pw_alignment/
  8. pw_allocator/
  9. pw_analog/
  10. pw_android_toolchain/
  11. pw_arduino_build/
  12. pw_assert/
  13. pw_assert_basic/
  14. pw_assert_log/
  15. pw_assert_tokenized/
  16. pw_assert_zephyr/
  17. pw_async/
  18. pw_async2/
  19. pw_async2_basic/
  20. pw_async2_epoll/
  21. pw_async_basic/
  22. pw_base64/
  23. pw_bloat/
  24. pw_blob_store/
  25. pw_bluetooth/
  26. pw_bluetooth_hci/
  27. pw_bluetooth_profiles/
  28. pw_bluetooth_proxy/
  29. pw_bluetooth_sapphire/
  30. pw_boot/
  31. pw_boot_cortex_m/
  32. pw_build/
  33. pw_build_android/
  34. pw_build_info/
  35. pw_build_mcuxpresso/
  36. pw_bytes/
  37. pw_channel/
  38. pw_checksum/
  39. pw_chre/
  40. pw_chrono/
  41. pw_chrono_embos/
  42. pw_chrono_freertos/
  43. pw_chrono_rp2040/
  44. pw_chrono_stl/
  45. pw_chrono_threadx/
  46. pw_chrono_zephyr/
  47. pw_cli/
  48. pw_compilation_testing/
  49. pw_config_loader/
  50. pw_console/
  51. pw_containers/
  52. pw_cpu_exception/
  53. pw_cpu_exception_cortex_m/
  54. pw_crypto/
  55. pw_digital_io/
  56. pw_digital_io_linux/
  57. pw_digital_io_mcuxpresso/
  58. pw_digital_io_rp2040/
  59. pw_docgen/
  60. pw_doctor/
  61. pw_emu/
  62. pw_env_setup/
  63. pw_env_setup_zephyr/
  64. pw_file/
  65. pw_format/
  66. pw_function/
  67. pw_fuzzer/
  68. pw_grpc/
  69. pw_hdlc/
  70. pw_hex_dump/
  71. pw_i2c/
  72. pw_i2c_linux/
  73. pw_i2c_mcuxpresso/
  74. pw_i2c_rp2040/
  75. pw_ide/
  76. pw_interrupt/
  77. pw_interrupt_cortex_m/
  78. pw_interrupt_xtensa/
  79. pw_interrupt_zephyr/
  80. pw_intrusive_ptr/
  81. pw_json/
  82. pw_kvs/
  83. pw_libc/
  84. pw_libcxx/
  85. pw_log/
  86. pw_log_android/
  87. pw_log_basic/
  88. pw_log_null/
  89. pw_log_rpc/
  90. pw_log_string/
  91. pw_log_tokenized/
  92. pw_log_zephyr/
  93. pw_malloc/
  94. pw_malloc_freelist/
  95. pw_malloc_freertos/
  96. pw_metric/
  97. pw_minimal_cpp_stdlib/
  98. pw_module/
  99. pw_multibuf/
  100. pw_multisink/
  101. pw_package/
  102. pw_perf_test/
  103. pw_persistent_ram/
  104. pw_polyfill/
  105. pw_preprocessor/
  106. pw_presubmit/
  107. pw_protobuf/
  108. pw_protobuf_compiler/
  109. pw_random/
  110. pw_result/
  111. pw_ring_buffer/
  112. pw_router/
  113. pw_rpc/
  114. pw_rpc_transport/
  115. pw_rust/
  116. pw_snapshot/
  117. pw_software_update/
  118. pw_span/
  119. pw_spi/
  120. pw_spi_linux/
  121. pw_spi_mcuxpresso/
  122. pw_spi_rp2040/
  123. pw_status/
  124. pw_stm32cube_build/
  125. pw_stream/
  126. pw_stream_shmem_mcuxpresso/
  127. pw_stream_uart_linux/
  128. pw_stream_uart_mcuxpresso/
  129. pw_string/
  130. pw_symbolizer/
  131. pw_sync/
  132. pw_sync_baremetal/
  133. pw_sync_embos/
  134. pw_sync_freertos/
  135. pw_sync_stl/
  136. pw_sync_threadx/
  137. pw_sync_zephyr/
  138. pw_sys_io/
  139. pw_sys_io_ambiq_sdk/
  140. pw_sys_io_arduino/
  141. pw_sys_io_baremetal_lm3s6965evb/
  142. pw_sys_io_baremetal_stm32f429/
  143. pw_sys_io_emcraft_sf2/
  144. pw_sys_io_mcuxpresso/
  145. pw_sys_io_rp2040/
  146. pw_sys_io_stdio/
  147. pw_sys_io_stm32cube/
  148. pw_sys_io_zephyr/
  149. pw_system/
  150. pw_target_runner/
  151. pw_thread/
  152. pw_thread_embos/
  153. pw_thread_freertos/
  154. pw_thread_stl/
  155. pw_thread_threadx/
  156. pw_thread_zephyr/
  157. pw_tls_client/
  158. pw_tls_client_boringssl/
  159. pw_tls_client_mbedtls/
  160. pw_tokenizer/
  161. pw_toolchain/
  162. pw_toolchain_bazel/
  163. pw_trace/
  164. pw_trace_tokenized/
  165. pw_transfer/
  166. pw_uart/
  167. pw_unit_test/
  168. pw_unit_test_zephyr/
  169. pw_varint/
  170. pw_watch/
  171. pw_web/
  172. pw_work_queue/
  173. seed/
  174. targets/
  175. third_party/
  176. ts/
  177. zephyr/
  178. .bazelignore
  179. .bazelrc
  180. .black.toml
  181. .clang-format
  182. .clang-tidy
  183. .eslintrc.cjs
  184. .git-blame-ignore-revs
  185. .gitattributes
  186. .gitignore
  187. .gn
  188. .mypy.ini
  189. .prettierignore
  190. .prettierrc.cjs
  191. .pw_ide.yaml
  192. .pylintrc
  193. activate.bat
  194. Android.bp
  195. AUTHORS
  196. bootstrap.bat
  197. bootstrap.sh
  198. BUILD.bazel
  199. BUILD.gn
  200. BUILDCONFIG.gn
  201. CMakeLists.txt
  202. jest.config.ts
  203. Kconfig.zephyr
  204. LICENSE
  205. modules.gni
  206. OWNERS
  207. package-lock.json
  208. package.json
  209. pigweed.json
  210. PIGWEED_MODULES
  211. README.md
  212. rollup.config.js
  213. tsconfig.json
  214. WORKSPACE
README.md

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/.

Links