fcmd 0.3.3__tar.gz → 0.3.4__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 (216) hide show
  1. {fcmd-0.3.3 → fcmd-0.3.4}/.bumpversion.toml +1 -1
  2. {fcmd-0.3.3 → fcmd-0.3.4}/PKG-INFO +1 -1
  3. {fcmd-0.3.3 → fcmd-0.3.4}/pyproject.toml +1 -1
  4. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/__init__.py +1 -1
  5. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/gittool.py +12 -1
  6. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_gittool.py +26 -0
  7. {fcmd-0.3.3 → fcmd-0.3.4}/uv.lock +1 -1
  8. {fcmd-0.3.3 → fcmd-0.3.4}/.copier-answers.yml +0 -0
  9. {fcmd-0.3.3 → fcmd-0.3.4}/.coveragerc +0 -0
  10. {fcmd-0.3.3 → fcmd-0.3.4}/.gitattributes +0 -0
  11. {fcmd-0.3.3 → fcmd-0.3.4}/.github/workflows/ci.yml +0 -0
  12. {fcmd-0.3.3 → fcmd-0.3.4}/.github/workflows/release.yml +0 -0
  13. {fcmd-0.3.3 → fcmd-0.3.4}/.gitignore +0 -0
  14. {fcmd-0.3.3 → fcmd-0.3.4}/.pre-commit-config.yaml +0 -0
  15. {fcmd-0.3.3 → fcmd-0.3.4}/.readthedocs.yaml +0 -0
  16. {fcmd-0.3.3 → fcmd-0.3.4}/.vscode/settings.json +0 -0
  17. {fcmd-0.3.3 → fcmd-0.3.4}/LICENSE +0 -0
  18. {fcmd-0.3.3 → fcmd-0.3.4}/Makefile +0 -0
  19. {fcmd-0.3.3 → fcmd-0.3.4}/README.md +0 -0
  20. {fcmd-0.3.3 → fcmd-0.3.4}/docs/_static/.gitkeep +0 -0
  21. {fcmd-0.3.3 → fcmd-0.3.4}/docs/api.rst +0 -0
  22. {fcmd-0.3.3 → fcmd-0.3.4}/docs/changelog.rst +0 -0
  23. {fcmd-0.3.3 → fcmd-0.3.4}/docs/conf.py +0 -0
  24. {fcmd-0.3.3 → fcmd-0.3.4}/docs/index.rst +0 -0
  25. {fcmd-0.3.3 → fcmd-0.3.4}/pyrefly.toml +0 -0
  26. {fcmd-0.3.3 → fcmd-0.3.4}/pytest.ini +0 -0
  27. {fcmd-0.3.3 → fcmd-0.3.4}/ruff.toml +0 -0
  28. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/__main__.py +0 -0
  29. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/__init__.py +0 -0
  30. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/_tool_args.py +0 -0
  31. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/_tool_exec.py +0 -0
  32. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/context.py +0 -0
  33. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/dag.py +0 -0
  34. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/errors.py +0 -0
  35. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/profiling.py +0 -0
  36. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/report.py +0 -0
  37. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/task.py +0 -0
  38. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/toolkit.py +0 -0
  39. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/__init__.py +0 -0
  40. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/__init__.py +0 -0
  41. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/completion_cmd.py +0 -0
  42. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/doctor_cmd.py +0 -0
  43. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/env_cmd.py +0 -0
  44. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/graph_cmd.py +0 -0
  45. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/info_cmd.py +0 -0
  46. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/profiler_cmd.py +0 -0
  47. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/yaml_cmd.py +0 -0
  48. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_common.py +0 -0
  49. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_completion_scripts.py +0 -0
  50. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_discovery.py +0 -0
  51. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_doctor_helpers.py +0 -0
  52. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_env_helpers.py +0 -0
  53. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_env_persist.py +0 -0
  54. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_profiler_helpers.py +0 -0
  55. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/archive/__init__.py +0 -0
  56. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/archive/archivex.py +0 -0
  57. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/archive/folderzip.py +0 -0
  58. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/archive/zipencrypt.py +0 -0
  59. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/__init__.py +0 -0
  60. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/calcdate.py +0 -0
  61. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/lscalc.py +0 -0
  62. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/mathtool.py +0 -0
  63. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/randtool.py +0 -0
  64. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/stattool.py +0 -0
  65. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/timetool.py +0 -0
  66. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/conv/__init__.py +0 -0
  67. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/conv/casetool.py +0 -0
  68. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/conv/codetool.py +0 -0
  69. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/conv/colortool.py +0 -0
  70. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/conv/convtool.py +0 -0
  71. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/conv/urltool.py +0 -0
  72. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/crypto/__init__.py +0 -0
  73. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/crypto/cryptool.py +0 -0
  74. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/crypto/hashfile.py +0 -0
  75. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/crypto/hashtool.py +0 -0
  76. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/crypto/idtool.py +0 -0
  77. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/__init__.py +0 -0
  78. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/csvtool.py +0 -0
  79. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/inifile.py +0 -0
  80. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/jsontool.py +0 -0
  81. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/tomltool.py +0 -0
  82. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/xmltool.py +0 -0
  83. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/yamtool.py +0 -0
  84. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/__init__.py +0 -0
  85. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/autofmt.py +0 -0
  86. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/bumpversion.py +0 -0
  87. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/dockercmd.py +0 -0
  88. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/envdev.py +0 -0
  89. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/packtool.py +0 -0
  90. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/piptool.py +0 -0
  91. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/pymake.py +0 -0
  92. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/__init__.py +0 -0
  93. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/filedate.py +0 -0
  94. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/filelevel.py +0 -0
  95. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/filerename.py +0 -0
  96. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/filesearch.py +0 -0
  97. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/folderback.py +0 -0
  98. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/pathtool.py +0 -0
  99. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/writefile.py +0 -0
  100. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/main.py +0 -0
  101. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/media/__init__.py +0 -0
  102. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/media/imagetool.py +0 -0
  103. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/media/pdftool.py +0 -0
  104. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/media/screenshot.py +0 -0
  105. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/net/__init__.py +0 -0
  106. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/net/iptool.py +0 -0
  107. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/net/nettool.py +0 -0
  108. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/net/portcheck.py +0 -0
  109. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/net/sshcopyid.py +0 -0
  110. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/__init__.py +0 -0
  111. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/clr.py +0 -0
  112. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/reseticoncache.py +0 -0
  113. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/setenv.py +0 -0
  114. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/sysinfo.py +0 -0
  115. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/taskkill.py +0 -0
  116. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/which.py +0 -0
  117. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/text/__init__.py +0 -0
  118. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/text/asciitool.py +0 -0
  119. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/text/padtool.py +0 -0
  120. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/text/regextool.py +0 -0
  121. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/text/textdiff.py +0 -0
  122. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/text/txttool.py +0 -0
  123. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/console.py +0 -0
  124. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/engine/__init__.py +0 -0
  125. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/engine/dependency_runner.py +0 -0
  126. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/engine/executors.py +0 -0
  127. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/engine/layer_runner.py +0 -0
  128. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/engine/task_command.py +0 -0
  129. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/engine/task_runner.py +0 -0
  130. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/models/__init__.py +0 -0
  131. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/models/command.py +0 -0
  132. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/models/filefilter.py +0 -0
  133. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/models/pdf.py +0 -0
  134. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/models/version.py +0 -0
  135. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/orchestration/__init__.py +0 -0
  136. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/orchestration/conditions.py +0 -0
  137. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/orchestration/yaml_loader.py +0 -0
  138. {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/py.typed +0 -0
  139. {fcmd-0.3.3 → fcmd-0.3.4}/tests/__init__.py +0 -0
  140. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli.py +0 -0
  141. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_archivex.py +0 -0
  142. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_asciitool.py +0 -0
  143. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_autofmt.py +0 -0
  144. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_bumpversion.py +0 -0
  145. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_calcdate.py +0 -0
  146. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_casetool.py +0 -0
  147. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_clr.py +0 -0
  148. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_codetool.py +0 -0
  149. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_colortool.py +0 -0
  150. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_convtool.py +0 -0
  151. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_cryptool.py +0 -0
  152. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_csvtool.py +0 -0
  153. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_dockercmd.py +0 -0
  154. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_envdev.py +0 -0
  155. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_filedate.py +0 -0
  156. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_filelevel.py +0 -0
  157. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_filerename.py +0 -0
  158. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_filesearch.py +0 -0
  159. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_folderback.py +0 -0
  160. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_folderzip.py +0 -0
  161. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_hashfile.py +0 -0
  162. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_hashtool.py +0 -0
  163. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_idtool.py +0 -0
  164. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_imagetool.py +0 -0
  165. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_inifile.py +0 -0
  166. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_iptool.py +0 -0
  167. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_jsontool.py +0 -0
  168. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_lscalc.py +0 -0
  169. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_mathtool.py +0 -0
  170. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_nettool.py +0 -0
  171. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_packtool.py +0 -0
  172. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_padtool.py +0 -0
  173. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_pathtool.py +0 -0
  174. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_pdftool.py +0 -0
  175. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_piptool.py +0 -0
  176. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_portcheck.py +0 -0
  177. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_profiler.py +0 -0
  178. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_pymake.py +0 -0
  179. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_randtool.py +0 -0
  180. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_regextool.py +0 -0
  181. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_reseticoncache.py +0 -0
  182. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_screenshot.py +0 -0
  183. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_setenv.py +0 -0
  184. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_sshcopyid.py +0 -0
  185. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_stattool.py +0 -0
  186. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_sysinfo.py +0 -0
  187. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_taskkill.py +0 -0
  188. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_textdiff.py +0 -0
  189. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_timetool.py +0 -0
  190. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_tomltool.py +0 -0
  191. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_txttool.py +0 -0
  192. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_urltool.py +0 -0
  193. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_which.py +0 -0
  194. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_writefile.py +0 -0
  195. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_xmltool.py +0 -0
  196. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_yamtool.py +0 -0
  197. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_zipencrypt.py +0 -0
  198. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_console.py +0 -0
  199. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_context.py +0 -0
  200. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_engine_executors.py +0 -0
  201. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_engine_task_command.py +0 -0
  202. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_env_persist.py +0 -0
  203. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_fcmd.py +0 -0
  204. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_graph.py +0 -0
  205. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_init.py +0 -0
  206. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_models.py +0 -0
  207. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_models_pdf.py +0 -0
  208. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_orchestration_conditions.py +0 -0
  209. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_orchestration_yaml_loader.py +0 -0
  210. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_perf_baseline.py +0 -0
  211. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_profiling.py +0 -0
  212. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_report.py +0 -0
  213. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_task.py +0 -0
  214. {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_toolkit.py +0 -0
  215. {fcmd-0.3.3 → fcmd-0.3.4}/tox.ini +0 -0
  216. {fcmd-0.3.3 → fcmd-0.3.4}/uv.toml +0 -0
@@ -1,5 +1,5 @@
1
1
  [tool.bumpversion]
2
- current_version = "0.3.3"
2
+ current_version = "0.3.4"
3
3
  commit = true
4
4
  exclude = ["template/*"]
5
5
  message = "chore: 更新版本 {current_version} → {new_version}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: fcmd
3
- Version: 0.3.3
3
+ Version: 0.3.4
4
4
  Summary: 极速 Python 工具集应用:DAG 任务调度 + 组合 CLI
5
5
  Author: fcmd
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fcmd"
3
- version = "0.3.3"
3
+ version = "0.3.4"
4
4
  description = "极速 Python 工具集应用:DAG 任务调度 + 组合 CLI"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -20,7 +20,7 @@
20
20
 
21
21
  from typing import Any
22
22
 
23
- __version__ = "0.3.3"
23
+ __version__ = "0.3.4"
24
24
 
25
25
  __all__ = [
26
26
  "Context",
@@ -7,7 +7,8 @@
7
7
  fcmd gittool a -m "feat: 新功能" # 添加并提交
8
8
  fcmd gittool i # 初始化并提交
9
9
  fcmd gittool isub # 初始化所有子目录的 Git 仓库
10
- fcmd gittool c # 清理未跟踪文件并查看状态
10
+ fcmd gittool c # 清理未跟踪文件(保留排除目录)并查看状态
11
+ fcmd gittool ca # 清理全部未跟踪文件(含排除目录)
11
12
  fcmd gittool p # 推送
12
13
  fcmd gittool pl # 拉取
13
14
  """
@@ -168,6 +169,16 @@ def c() -> None:
168
169
  """清理未跟踪文件并查看 Git 状态。"""
169
170
 
170
171
 
172
+ @fcmd.tool(
173
+ "gittool",
174
+ subcommand="ca",
175
+ help="清理全部未跟踪文件(含排除目录)",
176
+ cmd=["git", "clean", "-xfd", "."],
177
+ )
178
+ def ca() -> None:
179
+ """清理全部未跟踪文件,等同于 ``git clean -xfd .``,不保留排除目录。"""
180
+
181
+
171
182
  @fcmd.tool("gittool", subcommand="p", help="推送", cmd=["git", "push"])
172
183
  def p() -> None:
173
184
  """推送代码到远程仓库。"""
@@ -131,6 +131,22 @@ class TestGittool:
131
131
  result = subprocess.run(["git", "log", "--oneline"], capture_output=True, text=True, check=True)
132
132
  assert "chore: update" in result.stdout
133
133
 
134
+ def test_gittool_ca_removes_excluded_dirs(self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None:
135
+ """gittool ca 会清理 EXCLUDE_DIRS 中的目录(如 .venv)。"""
136
+ monkeypatch.chdir(tmp_path)
137
+ subprocess.run(["git", "init"], check=True, capture_output=True)
138
+ # 放入排除目录中的一个(.venv)以及一个普通未跟踪文件
139
+ (tmp_path / ".venv").mkdir()
140
+ (tmp_path / ".venv" / "pyvenv.cfg").write_text("home = /usr/bin", encoding="utf-8")
141
+ (tmp_path / "extra.log").write_text("junk", encoding="utf-8")
142
+ assert (tmp_path / ".venv").is_dir()
143
+ assert (tmp_path / "extra.log").is_file()
144
+ code = run_tool("gittool", ["ca"])
145
+ assert code == 0
146
+ # 两个都应该被删除
147
+ assert not (tmp_path / ".venv").exists(), "ca 应删除 .venv 排除目录"
148
+ assert not (tmp_path / "extra.log").exists(), "ca 应删除普通未跟踪文件"
149
+
134
150
 
135
151
  # ---------------------------------------------------------------------- #
136
152
  # gittool cmd 子命令验证
@@ -172,6 +188,16 @@ class TestGittoolCmdSpecs:
172
188
  assert spec.cmd is not None
173
189
  assert "pull" in spec.cmd
174
190
 
191
+ def test_ca_is_cmd_without_exclude(self) -> None:
192
+ """ca 是 cmd 类型子命令,直接 git clean -xfd . 不含 -e 排除。"""
193
+ from fcmd.apis.toolkit import _TOOL_REGISTRY
194
+
195
+ spec = _TOOL_REGISTRY["gittool"]["ca"]
196
+ assert spec.cmd is not None
197
+ assert spec.cmd == ("git", "clean", "-xfd", ".")
198
+ assert "-e" not in spec.cmd
199
+ assert spec.hidden is not True # ca 不是隐藏命令
200
+
175
201
 
176
202
  # ============================================================================ #
177
203
  # gittool isub 测试
@@ -94,7 +94,7 @@ wheels = [
94
94
 
95
95
  [[package]]
96
96
  name = "fcmd"
97
- version = "0.3.2"
97
+ version = "0.3.3"
98
98
  source = { editable = "." }
99
99
  dependencies = [
100
100
  { name = "pyyaml" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes