pw_{cli,presubmit}: Move plural()

Moves the `plural()` utility function to pw_cli so it may be used more
widely without a dependency on pw_presubmit.

Change-Id: Ie679bc936ee6c82f3f79925dfb0dbd58ec2ab224
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201630
Pigweed-Auto-Submit: Armando Montanez <amontanez@google.com>
Reviewed-by: Erik Gilling <konkers@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed-service-accounts.iam.gserviceaccount.com>
13 files changed
tree: fe1ae68f1ec53ae36a54336c53ba13abc68b187f
  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