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.
- {fcmd-0.3.3 → fcmd-0.3.4}/.bumpversion.toml +1 -1
- {fcmd-0.3.3 → fcmd-0.3.4}/PKG-INFO +1 -1
- {fcmd-0.3.3 → fcmd-0.3.4}/pyproject.toml +1 -1
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/__init__.py +1 -1
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/gittool.py +12 -1
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_gittool.py +26 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/uv.lock +1 -1
- {fcmd-0.3.3 → fcmd-0.3.4}/.copier-answers.yml +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/.coveragerc +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/.gitattributes +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/.github/workflows/ci.yml +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/.github/workflows/release.yml +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/.gitignore +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/.pre-commit-config.yaml +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/.readthedocs.yaml +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/.vscode/settings.json +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/LICENSE +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/Makefile +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/README.md +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/docs/_static/.gitkeep +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/docs/api.rst +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/docs/changelog.rst +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/docs/conf.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/docs/index.rst +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/pyrefly.toml +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/pytest.ini +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/ruff.toml +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/__main__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/_tool_args.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/_tool_exec.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/context.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/dag.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/errors.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/profiling.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/report.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/task.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/apis/toolkit.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/completion_cmd.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/doctor_cmd.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/env_cmd.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/graph_cmd.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/info_cmd.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/profiler_cmd.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_builtins/yaml_cmd.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_common.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_completion_scripts.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_discovery.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_doctor_helpers.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_env_helpers.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_env_persist.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/_profiler_helpers.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/archive/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/archive/archivex.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/archive/folderzip.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/archive/zipencrypt.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/calcdate.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/lscalc.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/mathtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/randtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/stattool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/calc/timetool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/conv/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/conv/casetool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/conv/codetool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/conv/colortool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/conv/convtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/conv/urltool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/crypto/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/crypto/cryptool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/crypto/hashfile.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/crypto/hashtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/crypto/idtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/csvtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/inifile.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/jsontool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/tomltool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/xmltool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/data/yamtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/autofmt.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/bumpversion.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/dockercmd.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/envdev.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/packtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/piptool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/dev/pymake.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/filedate.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/filelevel.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/filerename.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/filesearch.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/folderback.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/pathtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/fileops/writefile.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/main.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/media/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/media/imagetool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/media/pdftool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/media/screenshot.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/net/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/net/iptool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/net/nettool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/net/portcheck.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/net/sshcopyid.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/clr.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/reseticoncache.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/setenv.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/sysinfo.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/taskkill.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/system/which.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/text/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/text/asciitool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/text/padtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/text/regextool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/text/textdiff.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/cli/text/txttool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/console.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/engine/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/engine/dependency_runner.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/engine/executors.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/engine/layer_runner.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/engine/task_command.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/engine/task_runner.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/models/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/models/command.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/models/filefilter.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/models/pdf.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/models/version.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/orchestration/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/orchestration/conditions.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/orchestration/yaml_loader.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/src/fcmd/py.typed +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/__init__.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_archivex.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_asciitool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_autofmt.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_bumpversion.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_calcdate.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_casetool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_clr.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_codetool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_colortool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_convtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_cryptool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_csvtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_dockercmd.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_envdev.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_filedate.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_filelevel.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_filerename.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_filesearch.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_folderback.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_folderzip.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_hashfile.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_hashtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_idtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_imagetool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_inifile.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_iptool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_jsontool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_lscalc.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_mathtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_nettool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_packtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_padtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_pathtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_pdftool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_piptool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_portcheck.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_profiler.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_pymake.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_randtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_regextool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_reseticoncache.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_screenshot.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_setenv.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_sshcopyid.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_stattool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_sysinfo.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_taskkill.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_textdiff.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_timetool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_tomltool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_txttool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_urltool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_which.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_writefile.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_xmltool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_yamtool.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_cli_zipencrypt.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_console.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_context.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_engine_executors.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_engine_task_command.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_env_persist.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_fcmd.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_graph.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_init.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_models.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_models_pdf.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_orchestration_conditions.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_orchestration_yaml_loader.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_perf_baseline.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_profiling.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_report.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_task.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tests/test_toolkit.py +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/tox.ini +0 -0
- {fcmd-0.3.3 → fcmd-0.3.4}/uv.toml +0 -0
|
@@ -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 测试
|
|
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
|
|
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
|