py-wlcli 0.6.13__tar.gz → 0.7.0__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.
- {py_wlcli-0.6.13/rust → py_wlcli-0.7.0}/LICENSE +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/PKG-INFO +21 -22
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/README.md +18 -19
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/pyproject.toml +17 -5
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/rust/Cargo.lock +21 -54
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/rust/Cargo.toml +3 -2
- py_wlcli-0.7.0/rust/deny.toml +22 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/__init__.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/__main__.py +17 -4
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/cli_click.py +7 -9
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/__init__.py +1 -1
- py_wlcli-0.7.0/src/wl_cli/commands/buildcommands/__init__.py +1 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/buildcommands/build_utils.py +0 -24
- py_wlcli-0.7.0/src/wl_cli/commands/buildcommands/builders/coordinator.py +122 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/buildcommands/builders/environment.py +2 -2
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/buildcommands/builders/rust_builder.py +5 -3
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/buildcommands/dist.py +14 -11
- py_wlcli-0.7.0/src/wl_cli/commands/clean/__init__.py +1 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/clean/build.py +21 -18
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/clean/clean.py +25 -16
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/clean/clean_utils.py +11 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/clean/core.py +56 -50
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/clean/dead_code/dead_code_command.py +14 -23
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/clean/dead_code/detector.py +36 -12
- py_wlcli-0.7.0/src/wl_cli/commands/clean/dead_code/fixer.py +176 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/clean/dead_code/reporter.py +41 -51
- py_wlcli-0.7.0/src/wl_cli/commands/clean/lfs.py +215 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/clean/python.py +28 -21
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/clean/rust.py +27 -37
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/clean/venv.py +31 -27
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/cleanup.py +9 -5
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/config/config.py +66 -16
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/debug/debug.py +26 -5
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/debug/debug_cache.py +23 -8
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/debug/source_hasher.py +2 -0
- py_wlcli-0.7.0/src/wl_cli/commands/format/__init__.py +13 -0
- py_wlcli-0.7.0/src/wl_cli/commands/format/format_cache_adapter.py +125 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/format/format_command.py +59 -14
- py_wlcli-0.7.0/src/wl_cli/commands/format/format_coordinator.py +191 -0
- py_wlcli-0.7.0/src/wl_cli/commands/format/format_executor.py +470 -0
- py_wlcli-0.7.0/src/wl_cli/commands/format/format_outcome.py +44 -0
- py_wlcli-0.7.0/src/wl_cli/commands/format/format_path_handler.py +1016 -0
- py_wlcli-0.7.0/src/wl_cli/commands/format/python_formatter.py +496 -0
- py_wlcli-0.7.0/src/wl_cli/commands/format/rust_formatter.py +106 -0
- py_wlcli-0.7.0/src/wl_cli/commands/gate/__init__.py +1 -0
- py_wlcli-0.7.0/src/wl_cli/commands/gate/gate_command.py +862 -0
- py_wlcli-0.7.0/src/wl_cli/commands/gate/preflight.py +445 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/git/config.py +19 -7
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/git/git_facts.py +18 -1
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/git/hook.py +22 -9
- py_wlcli-0.7.0/src/wl_cli/commands/git/push_update.py +82 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/common/check_git_bash.py +2 -1
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/common/error_handler.py +6 -8
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/cargo_sync.py +6 -3
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/config_manager.py +9 -8
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/git/__init__.py +0 -2
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/git/branch_creator.py +49 -42
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/git/git_flow_manager.py +29 -23
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/git/git_lfs_manager.py +79 -56
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/git/git_utility.py +22 -13
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/git/gitignore_manager.py +13 -8
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/git_initializer.py +51 -32
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/project_structure/__init__.py +2 -0
- py_wlcli-0.7.0/src/wl_cli/commands/initenv/components/project_structure/config_generator.py +360 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/project_structure/directory_creator.py +26 -19
- py_wlcli-0.7.0/src/wl_cli/commands/initenv/components/project_structure/hook_source.py +110 -0
- py_wlcli-0.7.0/src/wl_cli/commands/initenv/components/project_structure/hooks_manager.py +995 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/project_structure/readme_handler.py +11 -11
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/project_structure/rust_files_handler.py +11 -2
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/project_structure/setup_handler.py +31 -12
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/project_structure/sop_generator.py +28 -10
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/project_structure/template_copier.py +20 -12
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/project_structure/template_manager.py +45 -20
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/pyproject_generator.py +3 -22
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/rust_initializer.py +28 -19
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/symlink_manager.py +3 -2
- py_wlcli-0.7.0/src/wl_cli/commands/initenv/components/venv_manager.py +118 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/initenv.py +22 -4
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/services/environment_initializer.py +116 -90
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/services/git_lfs_initializer.py +5 -5
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/services/project_structure_initializer.py +10 -7
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/lfs/README.md +2 -2
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/lfs/cli.py +14 -2
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/lfs/config.py +25 -13
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/lfs/initializer.py +53 -8
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/lfs/watcher.py +41 -12
- py_wlcli-0.7.0/src/wl_cli/commands/lint/lint_command.py +297 -0
- py_wlcli-0.7.0/src/wl_cli/commands/lint/lint_executor.py +409 -0
- py_wlcli-0.7.0/src/wl_cli/commands/lint/lint_reporter.py +579 -0
- py_wlcli-0.7.0/src/wl_cli/commands/lint/lint_run.py +258 -0
- py_wlcli-0.7.0/src/wl_cli/commands/lint/mypy_config.py +90 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/registry.py +1 -0
- py_wlcli-0.7.0/src/wl_cli/commands/self/common/capabilities.py +30 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/handlers/base_handler.py +2 -3
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/handlers/install_handler.py +23 -18
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/handlers/status_handler.py +21 -19
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/handlers/uninstall_handler.py +16 -15
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/handlers/update_handler.py +25 -20
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/handlers/version_handler.py +2 -3
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/self_command.py +46 -25
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/services/installation_manager.py +36 -31
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/services/local_installer.py +38 -40
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/services/pypi_updater.py +52 -47
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/services/windows_update.py +50 -48
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/base_dependency_analyzer.py +3 -2
- py_wlcli-0.7.0/src/wl_cli/commands/testcommands/cache_manager.py +1156 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/coverage_analyzer.py +364 -28
- py_wlcli-0.7.0/src/wl_cli/commands/testcommands/coverage_cache_manager.py +183 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/progress_manager.py +25 -12
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/python_env_detector.py +39 -11
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/report_generator.py +25 -13
- py_wlcli-0.7.0/src/wl_cli/commands/testcommands/single_test_executor.py +250 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/speed_checker.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/test_command_builder.py +47 -22
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/test_commands.py +213 -43
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/test_reporter.py +21 -11
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/test_result_handler.py +10 -2
- py_wlcli-0.7.0/src/wl_cli/commands/testcommands/test_runner.py +1343 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/test_utils.py +34 -1
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/utils/coverage_parser.py +2 -2
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/utils/env_info.py +1 -1
- py_wlcli-0.7.0/src/wl_cli/commands/testcommands/utils/project_root.py +61 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/update/services/__init__.py +0 -2
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/update/services/backup_manager.py +33 -21
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/update/services/component_manager.py +0 -9
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/update/services/conflict_resolver.py +22 -14
- py_wlcli-0.7.0/src/wl_cli/commands/update/services/vendors_updater.py +85 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/update/services/version_tracker.py +3 -2
- py_wlcli-0.7.0/src/wl_cli/commands/update/update_command.py +270 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/workflow.py +10 -6
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/lib/rust_utils.py +2 -1
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/cache.py +13 -1
- py_wlcli-0.7.0/src/wl_cli/utils/cache_ledger.py +355 -0
- py_wlcli-0.7.0/src/wl_cli/utils/cache_store.py +546 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/config/config_loader.py +14 -6
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/config/core.py +223 -38
- py_wlcli-0.7.0/src/wl_cli/utils/config/defaults.py +142 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/config/validation.py +2 -2
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/error_handler.py +2 -2
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/file_copier.py +2 -1
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/file_operations.py +8 -5
- py_wlcli-0.7.0/src/wl_cli/utils/logging.py +458 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/platform_adapter.py +37 -0
- py_wlcli-0.7.0/src/wl_cli/utils/pre_commit.py +266 -0
- py_wlcli-0.7.0/src/wl_cli/utils/pre_commit_config.py +72 -0
- py_wlcli-0.7.0/src/wl_cli/utils/root.py +521 -0
- py_wlcli-0.7.0/src/wl_cli/utils/root_fallback.py +256 -0
- py_wlcli-0.7.0/src/wl_cli/utils/run_evidence.py +236 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/structured_logging/config.py +28 -40
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/structured_logging/core.py +4 -41
- py_wlcli-0.7.0/src/wl_cli/utils/structured_logging/env.py +56 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/structured_logging/formatters.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/structured_logging/handlers.py +6 -14
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/structured_logging/logger.py +31 -72
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/subprocess.py +2 -2
- py_wlcli-0.7.0/src/wl_cli/utils/subprocess_utils.py +260 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/test_utils/test_filter.py +3 -3
- py_wlcli-0.7.0/src/wl_cli/utils/uv_run.py +79 -0
- py_wlcli-0.7.0/src/wl_cli/utils/uv_tree.py +71 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/uv_workspace.py +17 -41
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/version/pypi_version_checker.py +23 -12
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/version/version_detectors.py +15 -5
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/version/version_service.py +29 -16
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/version/version_updater.py +25 -13
- py_wlcli-0.7.0/src/wl_cli/utils/wl_dir_updater.py +1440 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/workspace_detector/core.py +8 -0
- py_wlcli-0.7.0/src/wl_cli/utils/workspace_detector/detection_strategies.py +107 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/config/mypy.ini +7 -4
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/config/template_config.toml +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/git/.gitignore +3 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/pre-commit +12 -8
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/pre-push +137 -23
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/project/.gitignore +3 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/rust/lib/rust_utils.py +3 -1
- py_wlcli-0.7.0/src/wl_cli/vendors/sop_doc/git-dev-sop.md +220 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/sop_doc/python-sop.md +3 -6
- py_wlcli-0.6.13/src/wl_cli/commands/buildcommands/__init__.py +0 -4
- py_wlcli-0.6.13/src/wl_cli/commands/buildcommands/builders/coordinator.py +0 -135
- py_wlcli-0.6.13/src/wl_cli/commands/clean/__init__.py +0 -6
- py_wlcli-0.6.13/src/wl_cli/commands/clean/dead_code/fixer.py +0 -124
- py_wlcli-0.6.13/src/wl_cli/commands/clean/lfs.py +0 -278
- py_wlcli-0.6.13/src/wl_cli/commands/dependency_resolver.py +0 -25
- py_wlcli-0.6.13/src/wl_cli/commands/format/__init__.py +0 -31
- py_wlcli-0.6.13/src/wl_cli/commands/format/format_cache.py +0 -75
- py_wlcli-0.6.13/src/wl_cli/commands/format/format_coordinator.py +0 -97
- py_wlcli-0.6.13/src/wl_cli/commands/format/format_executor.py +0 -366
- py_wlcli-0.6.13/src/wl_cli/commands/format/format_path_handler.py +0 -352
- py_wlcli-0.6.13/src/wl_cli/commands/format/python_formatter.py +0 -236
- py_wlcli-0.6.13/src/wl_cli/commands/format/rust_formatter.py +0 -80
- py_wlcli-0.6.13/src/wl_cli/commands/initenv/components/git/pre_commit_manager.py +0 -127
- py_wlcli-0.6.13/src/wl_cli/commands/initenv/components/project_structure/config_generator.py +0 -161
- py_wlcli-0.6.13/src/wl_cli/commands/initenv/components/project_structure/hooks_manager.py +0 -152
- py_wlcli-0.6.13/src/wl_cli/commands/initenv/components/venv_manager.py +0 -103
- py_wlcli-0.6.13/src/wl_cli/commands/lint/lint.py +0 -11
- py_wlcli-0.6.13/src/wl_cli/commands/lint/lint_command.py +0 -196
- py_wlcli-0.6.13/src/wl_cli/commands/lint/lint_executor.py +0 -93
- py_wlcli-0.6.13/src/wl_cli/commands/lint/lint_reporter.py +0 -352
- py_wlcli-0.6.13/src/wl_cli/commands/lint/mypy_config.py +0 -20
- py_wlcli-0.6.13/src/wl_cli/commands/testcommands/cache_manager.py +0 -937
- py_wlcli-0.6.13/src/wl_cli/commands/testcommands/coverage_cache_manager.py +0 -210
- py_wlcli-0.6.13/src/wl_cli/commands/testcommands/single_test_executor.py +0 -158
- py_wlcli-0.6.13/src/wl_cli/commands/testcommands/test_runner.py +0 -225
- py_wlcli-0.6.13/src/wl_cli/commands/testcommands/utils/project_root.py +0 -37
- py_wlcli-0.6.13/src/wl_cli/commands/update/services/gstack_updater.py +0 -576
- py_wlcli-0.6.13/src/wl_cli/commands/update/services/vendors_updater.py +0 -71
- py_wlcli-0.6.13/src/wl_cli/commands/update/update_command.py +0 -371
- py_wlcli-0.6.13/src/wl_cli/infrastructure/dependency_injection.py +0 -417
- py_wlcli-0.6.13/src/wl_cli/utils/config/defaults.py +0 -94
- py_wlcli-0.6.13/src/wl_cli/utils/logging.py +0 -340
- py_wlcli-0.6.13/src/wl_cli/utils/project_root.py +0 -86
- py_wlcli-0.6.13/src/wl_cli/utils/subprocess_utils.py +0 -164
- py_wlcli-0.6.13/src/wl_cli/utils/wl_dir_updater.py +0 -571
- py_wlcli-0.6.13/src/wl_cli/utils/workspace_detector/detection_strategies.py +0 -89
- py_wlcli-0.6.13/src/wl_cli/vendors/config/.coveragerc +0 -16
- {py_wlcli-0.6.13 → py_wlcli-0.7.0/rust}/LICENSE +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/rust/build.rs +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/rust/rust-analyzer.json +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/rust/src/lib.rs +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/rust/src/main.rs +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/base.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/buildcommands/build.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/buildcommands/builders/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/buildcommands/builders/cleanup.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/buildcommands/builders/stubs.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/buildcommands/test.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/clean/dead_code/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/clean/dead_code/utils.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/clean/utils/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/click_base.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/config/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/debug/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/debug/debug_subagent.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/debug/output_formatter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/format/format_progress.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/format/format_reporter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/git/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/git/git_flow.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/git/policy.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/common/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/common/exceptions.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/directory_utils.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/git/git_flow_interface.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/i18n_manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/log_manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/components/symlink_cleaner.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/initenv/services/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/lfs/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/lfs/hook.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/lfs/manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/lfs/policy.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/lint/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/common/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/common/config.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/common/version_cache.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/handlers/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/self/services/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/batch_processor.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/utils/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/utils/junit_parser.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/testcommands/utils/markdown_utils.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/update/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/update/utils/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/version/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/commands/version/version_command.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/exceptions.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/lib/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/config/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/config/env_exporter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/config/env_parser.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/language_utils.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/lazy_import.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/log_levels.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/log_rotators.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/output_context.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/performance/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/performance/decorators.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/performance/exporter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/performance/models.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/performance/monitor.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/performance_monitor.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/structured_logger.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/structured_logging/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/structured_logging/filtering.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/structured_logging/filters.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/test_utils/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/uv_tool.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/version/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/version/version_comparator.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/workspace_detector/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/workspace_detector/exceptions.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/workspace_detector/types.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/utils/workspace_detector/venv_resolver.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/config/.codespellrc +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/config/dependencies.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/config/pyproject_defaults.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/config/tool_configs.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/git/.pre-commit-config.yaml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/applypatch-msg.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/commit-msg.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/fsmonitor-watchman.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/post-update.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/pre-applypatch.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/pre-commit +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/pre-commit.legacy +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/pre-commit.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/pre-merge-commit.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/pre-push.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/pre-rebase.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/pre-receive.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/prepare-commit-msg.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/push-to-checkout.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/sendemail-validate.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/applypatch-msg.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/check_lockfile.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/check_lockfile.sh +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/commit-msg.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/fsmonitor-watchman.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/post-update.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/pre-applypatch.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/pre-commit.legacy +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/pre-commit.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/pre-commit.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/pre-merge-commit.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/pre-push.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/pre-rebase.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/pre-receive.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/unix/prepare-commit-msg.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/update.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/hooks/win/work.bat +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/project/.python-version +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/project/LICENSE +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/project/README.md +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/project/pyproject.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/project/pyproject_no_workspace.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/project/pyproject_workspace.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/readme/README.md +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/rust/Cargo.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/rust/lib/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/rust/src/lib.rs +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/rust/src/main.rs +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/rust/tests/test_rust_fallback.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/sop_doc/industrial-standard-sop.md +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.7.0}/src/wl_cli/vendors/sop_doc/rust-readme.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: py_wlcli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
4
4
|
Requires-Dist: toml>=0.10.2
|
|
5
5
|
Requires-Dist: click>=8.1.0
|
|
6
6
|
Requires-Dist: tqdm>=4.66.0
|
|
@@ -27,8 +27,8 @@ Author-email: WL Admin <wl.admin@example.com>
|
|
|
27
27
|
License-Expression: MIT
|
|
28
28
|
Requires-Python: >=3.11
|
|
29
29
|
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
30
|
-
Project-URL: Homepage, https://gitlab.gewinnrobo.com/Humuyuan/
|
|
31
|
-
Project-URL: Issues, https://gitlab.gewinnrobo.com/Humuyuan/
|
|
30
|
+
Project-URL: Homepage, https://gitlab.gewinnrobo.com/Humuyuan/wl-cli
|
|
31
|
+
Project-URL: Issues, https://gitlab.gewinnrobo.com/Humuyuan/wl-cli/-/issues
|
|
32
32
|
|
|
33
33
|
# wl_cli(`wl` CLI)
|
|
34
34
|
|
|
@@ -46,11 +46,11 @@ Project-URL: Issues, https://gitlab.gewinnrobo.com/Humuyuan/py_wlcommands/-/issu
|
|
|
46
46
|
| `wl format` | 格式化 Python 与 Rust 代码 |
|
|
47
47
|
| `wl lint` | 代码质量检查(ruff/mypy 等) |
|
|
48
48
|
| `wl clean` | 清理构建产物与临时文件 |
|
|
49
|
-
| `wl debug` |
|
|
49
|
+
| `wl debug` | (已弃用)质量门 — 改用 `wl test -s` 与 `wl format -s` |
|
|
50
50
|
| `wl self` | 自管理命令 |
|
|
51
51
|
|
|
52
52
|
命令行别名:`b`→build、`c`→clean、`f`→format、`i`→init。
|
|
53
|
-
完整命令参考见 [CLI_COMMANDS.md](https://github.com/CharlieZi/
|
|
53
|
+
完整命令参考见 [CLI_COMMANDS.md](https://github.com/CharlieZi/wl-cli/blob/main/CLI_COMMANDS.md)。
|
|
54
54
|
|
|
55
55
|
## 环境要求
|
|
56
56
|
|
|
@@ -63,23 +63,23 @@ Project-URL: Issues, https://gitlab.gewinnrobo.com/Humuyuan/py_wlcommands/-/issu
|
|
|
63
63
|
### 稳定版(PyPI)
|
|
64
64
|
|
|
65
65
|
```bash
|
|
66
|
-
pip install
|
|
66
|
+
pip install py-wlcli
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
按需安装可选 extra:`pip install "
|
|
70
|
-
`pip install "
|
|
71
|
-
详见[安装文档](https://github.com/CharlieZi/
|
|
69
|
+
按需安装可选 extra:`pip install "py-wlcli[lfs]"`(LFS watch)、
|
|
70
|
+
`pip install "py-wlcli[test]"`(测试套件)、`pip install "py-wlcli[dev]"`(开发工具)。
|
|
71
|
+
详见[安装文档](https://github.com/CharlieZi/wl-cli/blob/main/docs/user/installation.md)。
|
|
72
72
|
|
|
73
73
|
### 开发版(从源码)
|
|
74
74
|
|
|
75
75
|
```bash
|
|
76
76
|
# 以 GitLab 为主仓(origin),GitHub 为镜像
|
|
77
|
-
git clone https://gitlab.gewinnrobo.com/Humuyuan/
|
|
77
|
+
git clone https://gitlab.gewinnrobo.com/Humuyuan/wl-cli.git
|
|
78
78
|
cd wl_cli
|
|
79
79
|
uv pip install -e ".[dev,test]"
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
-
GitHub 镜像:<https://github.com/CharlieZi/
|
|
82
|
+
GitHub 镜像:<https://github.com/CharlieZi/wl-cli.git>
|
|
83
83
|
|
|
84
84
|
## 快速开始
|
|
85
85
|
|
|
@@ -102,25 +102,24 @@ pytest tests/ -v # 指定文件(pytest 直跑)
|
|
|
102
102
|
```
|
|
103
103
|
|
|
104
104
|
提交前请确保 pre-commit 通过(ruff、codespell、lockfile 一致性等)。
|
|
105
|
-
开发约束详见 [CLAUDE.md](https://github.com/CharlieZi/
|
|
106
|
-
贡献流程见 [CONTRIBUTING.md](https://github.com/CharlieZi/
|
|
105
|
+
开发约束详见 [CLAUDE.md](https://github.com/CharlieZi/wl-cli/blob/main/CLAUDE.md),
|
|
106
|
+
贡献流程见 [CONTRIBUTING.md](https://github.com/CharlieZi/wl-cli/blob/main/CONTRIBUTING.md)。
|
|
107
107
|
|
|
108
108
|
## 文档
|
|
109
109
|
|
|
110
|
-
- [CLI_COMMANDS.md](https://github.com/CharlieZi/
|
|
111
|
-
- [CONTEXT.md](https://github.com/CharlieZi/
|
|
112
|
-
- [docs/](https://github.com/CharlieZi/
|
|
113
|
-
- [安装文档](https://github.com/CharlieZi/
|
|
110
|
+
- [CLI_COMMANDS.md](https://github.com/CharlieZi/wl-cli/blob/main/CLI_COMMANDS.md) — 命令参考
|
|
111
|
+
- [CONTEXT.md](https://github.com/CharlieZi/wl-cli/blob/main/CONTEXT.md) — 架构术语(Click 迁移语境)
|
|
112
|
+
- [docs/](https://github.com/CharlieZi/wl-cli/tree/main/docs) — 设计、ADR、章节与 CICD/发布文档
|
|
113
|
+
- [安装文档](https://github.com/CharlieZi/wl-cli/blob/main/docs/user/installation.md) — 安装细节与 shell 补全
|
|
114
114
|
|
|
115
115
|
## 架构速览
|
|
116
116
|
|
|
117
|
-
Click CLI([src/
|
|
117
|
+
Click CLI([src/wl_cli/cli_click.py](https://github.com/CharlieZi/wl-cli/blob/main/src/wl_cli/cli_click.py)
|
|
118
118
|
经 `setup_commands()` 直接注册)→ 各命令实现(`commands/<group>/`)→ 业务逻辑;
|
|
119
|
-
Rust 原生扩展(`rust/`、`src/wl_cli/lib/`)经 maturin 编译为 `wl_cli_native
|
|
120
|
-
|
|
121
|
-
架构演进背景见 [Click 迁移设计](https://github.com/CharlieZi/py_wlcommands/blob/main/docs/superpowers/specs/2026-06-02-full-click-migration-design.md)。
|
|
119
|
+
Rust 原生扩展(`rust/`、`src/wl_cli/lib/`)经 maturin 编译为 `wl_cli_native`。
|
|
120
|
+
架构演进背景见 [Click 迁移设计](https://github.com/CharlieZi/wl-cli/blob/main/docs/superpowers/specs/2026-06-02-full-click-migration-design.md)。
|
|
122
121
|
|
|
123
122
|
## 许可证
|
|
124
123
|
|
|
125
|
-
MIT,见 [LICENSE](https://github.com/CharlieZi/
|
|
124
|
+
MIT,见 [LICENSE](https://github.com/CharlieZi/wl-cli/blob/main/LICENSE)。
|
|
126
125
|
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
| `wl format` | 格式化 Python 与 Rust 代码 |
|
|
15
15
|
| `wl lint` | 代码质量检查(ruff/mypy 等) |
|
|
16
16
|
| `wl clean` | 清理构建产物与临时文件 |
|
|
17
|
-
| `wl debug` |
|
|
17
|
+
| `wl debug` | (已弃用)质量门 — 改用 `wl test -s` 与 `wl format -s` |
|
|
18
18
|
| `wl self` | 自管理命令 |
|
|
19
19
|
|
|
20
20
|
命令行别名:`b`→build、`c`→clean、`f`→format、`i`→init。
|
|
21
|
-
完整命令参考见 [CLI_COMMANDS.md](https://github.com/CharlieZi/
|
|
21
|
+
完整命令参考见 [CLI_COMMANDS.md](https://github.com/CharlieZi/wl-cli/blob/main/CLI_COMMANDS.md)。
|
|
22
22
|
|
|
23
23
|
## 环境要求
|
|
24
24
|
|
|
@@ -31,23 +31,23 @@
|
|
|
31
31
|
### 稳定版(PyPI)
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
pip install
|
|
34
|
+
pip install py-wlcli
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
按需安装可选 extra:`pip install "
|
|
38
|
-
`pip install "
|
|
39
|
-
详见[安装文档](https://github.com/CharlieZi/
|
|
37
|
+
按需安装可选 extra:`pip install "py-wlcli[lfs]"`(LFS watch)、
|
|
38
|
+
`pip install "py-wlcli[test]"`(测试套件)、`pip install "py-wlcli[dev]"`(开发工具)。
|
|
39
|
+
详见[安装文档](https://github.com/CharlieZi/wl-cli/blob/main/docs/user/installation.md)。
|
|
40
40
|
|
|
41
41
|
### 开发版(从源码)
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
44
|
# 以 GitLab 为主仓(origin),GitHub 为镜像
|
|
45
|
-
git clone https://gitlab.gewinnrobo.com/Humuyuan/
|
|
45
|
+
git clone https://gitlab.gewinnrobo.com/Humuyuan/wl-cli.git
|
|
46
46
|
cd wl_cli
|
|
47
47
|
uv pip install -e ".[dev,test]"
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
GitHub 镜像:<https://github.com/CharlieZi/
|
|
50
|
+
GitHub 镜像:<https://github.com/CharlieZi/wl-cli.git>
|
|
51
51
|
|
|
52
52
|
## 快速开始
|
|
53
53
|
|
|
@@ -70,24 +70,23 @@ pytest tests/ -v # 指定文件(pytest 直跑)
|
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
提交前请确保 pre-commit 通过(ruff、codespell、lockfile 一致性等)。
|
|
73
|
-
开发约束详见 [CLAUDE.md](https://github.com/CharlieZi/
|
|
74
|
-
贡献流程见 [CONTRIBUTING.md](https://github.com/CharlieZi/
|
|
73
|
+
开发约束详见 [CLAUDE.md](https://github.com/CharlieZi/wl-cli/blob/main/CLAUDE.md),
|
|
74
|
+
贡献流程见 [CONTRIBUTING.md](https://github.com/CharlieZi/wl-cli/blob/main/CONTRIBUTING.md)。
|
|
75
75
|
|
|
76
76
|
## 文档
|
|
77
77
|
|
|
78
|
-
- [CLI_COMMANDS.md](https://github.com/CharlieZi/
|
|
79
|
-
- [CONTEXT.md](https://github.com/CharlieZi/
|
|
80
|
-
- [docs/](https://github.com/CharlieZi/
|
|
81
|
-
- [安装文档](https://github.com/CharlieZi/
|
|
78
|
+
- [CLI_COMMANDS.md](https://github.com/CharlieZi/wl-cli/blob/main/CLI_COMMANDS.md) — 命令参考
|
|
79
|
+
- [CONTEXT.md](https://github.com/CharlieZi/wl-cli/blob/main/CONTEXT.md) — 架构术语(Click 迁移语境)
|
|
80
|
+
- [docs/](https://github.com/CharlieZi/wl-cli/tree/main/docs) — 设计、ADR、章节与 CICD/发布文档
|
|
81
|
+
- [安装文档](https://github.com/CharlieZi/wl-cli/blob/main/docs/user/installation.md) — 安装细节与 shell 补全
|
|
82
82
|
|
|
83
83
|
## 架构速览
|
|
84
84
|
|
|
85
|
-
Click CLI([src/
|
|
85
|
+
Click CLI([src/wl_cli/cli_click.py](https://github.com/CharlieZi/wl-cli/blob/main/src/wl_cli/cli_click.py)
|
|
86
86
|
经 `setup_commands()` 直接注册)→ 各命令实现(`commands/<group>/`)→ 业务逻辑;
|
|
87
|
-
Rust 原生扩展(`rust/`、`src/wl_cli/lib/`)经 maturin 编译为 `wl_cli_native
|
|
88
|
-
|
|
89
|
-
架构演进背景见 [Click 迁移设计](https://github.com/CharlieZi/py_wlcommands/blob/main/docs/superpowers/specs/2026-06-02-full-click-migration-design.md)。
|
|
87
|
+
Rust 原生扩展(`rust/`、`src/wl_cli/lib/`)经 maturin 编译为 `wl_cli_native`。
|
|
88
|
+
架构演进背景见 [Click 迁移设计](https://github.com/CharlieZi/wl-cli/blob/main/docs/superpowers/specs/2026-06-02-full-click-migration-design.md)。
|
|
90
89
|
|
|
91
90
|
## 许可证
|
|
92
91
|
|
|
93
|
-
MIT,见 [LICENSE](https://github.com/CharlieZi/
|
|
92
|
+
MIT,见 [LICENSE](https://github.com/CharlieZi/wl-cli/blob/main/LICENSE)。
|
|
@@ -49,8 +49,8 @@ build-backend = "maturin"
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
[project.urls]
|
|
52
|
-
Homepage = "https://gitlab.gewinnrobo.com/Humuyuan/
|
|
53
|
-
Issues = "https://gitlab.gewinnrobo.com/Humuyuan/
|
|
52
|
+
Homepage = "https://gitlab.gewinnrobo.com/Humuyuan/wl-cli"
|
|
53
|
+
Issues = "https://gitlab.gewinnrobo.com/Humuyuan/wl-cli/-/issues"
|
|
54
54
|
|
|
55
55
|
[tool.maturin]
|
|
56
56
|
manifest-path = "rust/Cargo.toml"
|
|
@@ -89,11 +89,24 @@ target-version = "py310"
|
|
|
89
89
|
|
|
90
90
|
[tool.ruff.format]
|
|
91
91
|
preview = false
|
|
92
|
+
# Vendored upstream assets are not this repo's code, so they must never redden
|
|
93
|
+
# the format leg -- same 口径 as the existing codespell exclusion
|
|
94
|
+
# (^src/wl_cli/vendors/ in .wl/.pre-commit-config.yaml). `lint` and `format`
|
|
95
|
+
# keep separate exclude lists, so the pattern is written in both; the dual
|
|
96
|
+
# assertion in tests/test_gate_lint_scope.py pins both legs so neither can be
|
|
97
|
+
# silently widened. The glob needs `/**` (ruff matches file paths, so a bare
|
|
98
|
+
# directory path matches nothing).
|
|
99
|
+
exclude = [ "src/wl_cli/vendors/**",]
|
|
92
100
|
|
|
93
101
|
[tool.ruff.lint]
|
|
94
102
|
select = ["E", "W", "F", "I", "C4", "UP", "N", "B", "C90", "TCH"]
|
|
95
|
-
ignore = ["E501", "B904", "
|
|
96
|
-
exclude = [ ".git", ".ruff_cache", "__pycache__", "build", "dist", "*.egg-info", "uv.lock", "tmp",]
|
|
103
|
+
ignore = ["E501", "B904", "E402", "F811", "S607", "N802", "N817"]
|
|
104
|
+
exclude = [ ".git", ".ruff_cache", "__pycache__", "build", "dist", "*.egg-info", "uv.lock", "tmp", "src/wl_cli/vendors/**",]
|
|
105
|
+
|
|
106
|
+
# F841 (unused local variable) is enabled for package code as a dead-code
|
|
107
|
+
# backstop, but exempted in tests where unused locals are often scaffolding.
|
|
108
|
+
[tool.ruff.lint.per-file-ignores]
|
|
109
|
+
"tests/*" = ["F841"]
|
|
97
110
|
|
|
98
111
|
[tool.ruff.lint.mccabe]
|
|
99
112
|
max-complexity = 14
|
|
@@ -133,5 +146,4 @@ omit = [
|
|
|
133
146
|
"tests/*",
|
|
134
147
|
"*/__pycache__/*",
|
|
135
148
|
".venv/*",
|
|
136
|
-
"wl_cli/commands/selfcommands/*",
|
|
137
149
|
]
|
|
@@ -2,22 +2,6 @@
|
|
|
2
2
|
# It is not intended for manual editing.
|
|
3
3
|
version = 4
|
|
4
4
|
|
|
5
|
-
[[package]]
|
|
6
|
-
name = "cc"
|
|
7
|
-
version = "1.4.5"
|
|
8
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
-
checksum = "005ec2760ca554fae18df7a11195552ec576cd665632a881bc011d5bb2fd4d80"
|
|
10
|
-
dependencies = [
|
|
11
|
-
"find-msvc-tools",
|
|
12
|
-
"shlex",
|
|
13
|
-
]
|
|
14
|
-
|
|
15
|
-
[[package]]
|
|
16
|
-
name = "find-msvc-tools"
|
|
17
|
-
version = "0.1.12"
|
|
18
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
19
|
-
checksum = "3e0f1c7c3a72c66fd80abe965175f7523475c0489a87d3ff9d6e8c87d87a9d2d"
|
|
20
|
-
|
|
21
5
|
[[package]]
|
|
22
6
|
name = "heck"
|
|
23
7
|
version = "0.5.0"
|
|
@@ -26,9 +10,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
|
26
10
|
|
|
27
11
|
[[package]]
|
|
28
12
|
name = "libc"
|
|
29
|
-
version = "0.2.
|
|
13
|
+
version = "0.2.186"
|
|
30
14
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
31
|
-
checksum = "
|
|
15
|
+
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
|
|
32
16
|
|
|
33
17
|
[[package]]
|
|
34
18
|
name = "once_cell"
|
|
@@ -38,24 +22,24 @@ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
|
38
22
|
|
|
39
23
|
[[package]]
|
|
40
24
|
name = "portable-atomic"
|
|
41
|
-
version = "1.
|
|
25
|
+
version = "1.13.1"
|
|
42
26
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
43
|
-
checksum = "
|
|
27
|
+
checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
|
|
44
28
|
|
|
45
29
|
[[package]]
|
|
46
30
|
name = "proc-macro2"
|
|
47
|
-
version = "1.0.
|
|
31
|
+
version = "1.0.106"
|
|
48
32
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
49
|
-
checksum = "
|
|
33
|
+
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
|
50
34
|
dependencies = [
|
|
51
35
|
"unicode-ident",
|
|
52
36
|
]
|
|
53
37
|
|
|
54
38
|
[[package]]
|
|
55
39
|
name = "pyo3"
|
|
56
|
-
version = "0.
|
|
40
|
+
version = "0.29.2"
|
|
57
41
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
58
|
-
checksum = "
|
|
42
|
+
checksum = "4688ddedf473e32662b9b067670129a8afb8c18e351482c70d62ba4a88171e8b"
|
|
59
43
|
dependencies = [
|
|
60
44
|
"libc",
|
|
61
45
|
"once_cell",
|
|
@@ -67,19 +51,18 @@ dependencies = [
|
|
|
67
51
|
|
|
68
52
|
[[package]]
|
|
69
53
|
name = "pyo3-build-config"
|
|
70
|
-
version = "0.
|
|
54
|
+
version = "0.29.2"
|
|
71
55
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
72
|
-
checksum = "
|
|
56
|
+
checksum = "f41027e41b4bd03f6e60f9f417fe24a6341a6bb744edd62b6f709f2a52ea30e9"
|
|
73
57
|
dependencies = [
|
|
74
|
-
"python3-dll-a",
|
|
75
58
|
"target-lexicon",
|
|
76
59
|
]
|
|
77
60
|
|
|
78
61
|
[[package]]
|
|
79
62
|
name = "pyo3-ffi"
|
|
80
|
-
version = "0.
|
|
63
|
+
version = "0.29.2"
|
|
81
64
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
82
|
-
checksum = "
|
|
65
|
+
checksum = "e591a95526fead067432c3b3a33fc74770b87b1e04e73671090d9c2055a2b327"
|
|
83
66
|
dependencies = [
|
|
84
67
|
"libc",
|
|
85
68
|
"pyo3-build-config",
|
|
@@ -87,9 +70,9 @@ dependencies = [
|
|
|
87
70
|
|
|
88
71
|
[[package]]
|
|
89
72
|
name = "pyo3-macros"
|
|
90
|
-
version = "0.
|
|
73
|
+
version = "0.29.2"
|
|
91
74
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
92
|
-
checksum = "
|
|
75
|
+
checksum = "73225868fc1cd84eef2c3c230ddb91273bf1de46aeb8a4248da76d32a0924a1c"
|
|
93
76
|
dependencies = [
|
|
94
77
|
"proc-macro2",
|
|
95
78
|
"pyo3-macros-backend",
|
|
@@ -99,46 +82,30 @@ dependencies = [
|
|
|
99
82
|
|
|
100
83
|
[[package]]
|
|
101
84
|
name = "pyo3-macros-backend"
|
|
102
|
-
version = "0.
|
|
85
|
+
version = "0.29.2"
|
|
103
86
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
104
|
-
checksum = "
|
|
87
|
+
checksum = "571575aa3749fa6216757dd47d2a3e7ef360f329a40f0666a9fbd14889024952"
|
|
105
88
|
dependencies = [
|
|
106
89
|
"heck",
|
|
107
90
|
"proc-macro2",
|
|
108
|
-
"pyo3-build-config",
|
|
109
91
|
"quote",
|
|
110
92
|
"syn",
|
|
111
93
|
]
|
|
112
94
|
|
|
113
|
-
[[package]]
|
|
114
|
-
name = "python3-dll-a"
|
|
115
|
-
version = "0.2.15"
|
|
116
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
117
|
-
checksum = "d80ba7540edb18890d444c5aa8e1f1f99b1bdf26fb26ae383135325f4a36042b"
|
|
118
|
-
dependencies = [
|
|
119
|
-
"cc",
|
|
120
|
-
]
|
|
121
|
-
|
|
122
95
|
[[package]]
|
|
123
96
|
name = "quote"
|
|
124
|
-
version = "1.0.
|
|
97
|
+
version = "1.0.46"
|
|
125
98
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
126
|
-
checksum = "
|
|
99
|
+
checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368"
|
|
127
100
|
dependencies = [
|
|
128
101
|
"proc-macro2",
|
|
129
102
|
]
|
|
130
103
|
|
|
131
|
-
[[package]]
|
|
132
|
-
name = "shlex"
|
|
133
|
-
version = "2.0.1"
|
|
134
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
135
|
-
checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
|
|
136
|
-
|
|
137
104
|
[[package]]
|
|
138
105
|
name = "syn"
|
|
139
|
-
version = "2.0.
|
|
106
|
+
version = "2.0.118"
|
|
140
107
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
141
|
-
checksum = "
|
|
108
|
+
checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
|
|
142
109
|
dependencies = [
|
|
143
110
|
"proc-macro2",
|
|
144
111
|
"quote",
|
|
@@ -159,7 +126,7 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
|
159
126
|
|
|
160
127
|
[[package]]
|
|
161
128
|
name = "wl_cli_native"
|
|
162
|
-
version = "0.
|
|
129
|
+
version = "0.7.0"
|
|
163
130
|
dependencies = [
|
|
164
131
|
"pyo3",
|
|
165
132
|
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
[package]
|
|
3
3
|
name = "wl_cli_native"
|
|
4
|
-
version = "0.
|
|
4
|
+
version = "0.7.0"
|
|
5
5
|
edition = "2024"
|
|
6
6
|
description = "wl_cli - Python项目"
|
|
7
7
|
authors = ["WL Admin <wl.admin@example.com>"]
|
|
@@ -10,7 +10,8 @@ license = "MIT"
|
|
|
10
10
|
[dependencies]
|
|
11
11
|
# 与 pyproject.toml [tool.maturin] features 保持同步(lockstep)——二者取并集,改动需同步。
|
|
12
12
|
# Keep in lockstep with [tool.maturin] features in pyproject.toml — cargo unions both sets.
|
|
13
|
-
|
|
13
|
+
# IS-5: 0.28.3 had RUSTSEC-2026-0176/-0177 (fixed in >=0.29.0); 0.29 keeps the same features.
|
|
14
|
+
pyo3 = { version = "0.29.0", features = ["extension-module", "abi3", "abi3-py311", "generate-import-lib"] }
|
|
14
15
|
|
|
15
16
|
[lib]
|
|
16
17
|
name = "wl_cli_native"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# cargo-deny license policy (IS-16).
|
|
2
|
+
# Allow list covers every license in the resolved rust/Cargo.lock graph
|
|
3
|
+
# (pyo3 + its proc-macro/build deps). Derived from `cargo metadata`:
|
|
4
|
+
# MIT OR Apache-2.0 pyo3 & friends, heck, libc, once_cell, ...
|
|
5
|
+
# Apache-2.0 OR MIT portable-atomic
|
|
6
|
+
# Apache-2.0 WITH LLVM-exception target-lexicon
|
|
7
|
+
# (MIT OR Apache-2.0) AND Unicode-3.0 unicode-ident
|
|
8
|
+
[licenses]
|
|
9
|
+
allow = [
|
|
10
|
+
"MIT",
|
|
11
|
+
"Apache-2.0",
|
|
12
|
+
"Apache-2.0 WITH LLVM-exception",
|
|
13
|
+
"Unicode-3.0",
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
# Source allow-list (issue #85): every crate in rust/Cargo.lock resolves from
|
|
17
|
+
# the crates.io registry (there are no git dependencies), so allow exactly that
|
|
18
|
+
# and nothing else. `cargo deny check sources` fails if a dependency is ever
|
|
19
|
+
# pulled from an unexpected registry or git host.
|
|
20
|
+
[sources]
|
|
21
|
+
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
|
|
22
|
+
allow-git = []
|
|
@@ -16,7 +16,14 @@ def _setup_stdio_encoding() -> None:
|
|
|
16
16
|
characters crash print(). This wraps stdout/stderr with explicit
|
|
17
17
|
UTF-8 encoding so all output works regardless of terminal locale.
|
|
18
18
|
"""
|
|
19
|
-
|
|
19
|
+
# Imported here (with a script-execution fallback, matching the cli_click
|
|
20
|
+
# import below) so this module stays runnable as a plain script.
|
|
21
|
+
try:
|
|
22
|
+
from .utils import platform_adapter
|
|
23
|
+
except ImportError: # pragma: no cover - direct script execution
|
|
24
|
+
from wl_cli.utils import platform_adapter # type: ignore[no-redef]
|
|
25
|
+
|
|
26
|
+
if not platform_adapter.PlatformAdapter.is_windows():
|
|
20
27
|
return
|
|
21
28
|
# PYTHONIOENCODING also helps subprocess pipe encoding
|
|
22
29
|
os.environ.setdefault("PYTHONIOENCODING", "utf-8")
|
|
@@ -48,7 +55,7 @@ def check_installation() -> bool:
|
|
|
48
55
|
True if installed correctly, False otherwise.
|
|
49
56
|
"""
|
|
50
57
|
try:
|
|
51
|
-
import wl_cli
|
|
58
|
+
import wl_cli # noqa: F401 # availability probe: import must succeed
|
|
52
59
|
|
|
53
60
|
return True
|
|
54
61
|
except ImportError:
|
|
@@ -105,8 +112,14 @@ except ImportError:
|
|
|
105
112
|
|
|
106
113
|
|
|
107
114
|
def main() -> None:
|
|
108
|
-
"""Main entry point for WL Commands.
|
|
109
|
-
|
|
115
|
+
"""Main entry point for WL Commands.
|
|
116
|
+
|
|
117
|
+
``cli_click.main`` returns the process exit code (0 on success, 1 when a
|
|
118
|
+
command raises), so the entry point must hand that value to the
|
|
119
|
+
interpreter instead of discarding it. Without the ``SystemExit`` every
|
|
120
|
+
``return 1`` path inside ``cli_click.main`` exited 0 (#186).
|
|
121
|
+
"""
|
|
122
|
+
raise SystemExit(cli_main())
|
|
110
123
|
|
|
111
124
|
|
|
112
125
|
# Alias for compatibility with tests
|
|
@@ -36,21 +36,19 @@ def _register_click_command(
|
|
|
36
36
|
) -> None:
|
|
37
37
|
"""Register a Click command function with the wl group.
|
|
38
38
|
|
|
39
|
+
Aliases register the *same* Click object under a second name (Click keeps
|
|
40
|
+
the object's own ``name`` untouched), so an alias accepts exactly the
|
|
41
|
+
canonical command's options, arguments and subcommands. A zero-option
|
|
42
|
+
wrapper shell would reject every parameter an alias was given (#194).
|
|
43
|
+
|
|
39
44
|
Args:
|
|
40
45
|
name: Command name
|
|
41
46
|
click_func: Click command function
|
|
42
47
|
aliases: List of command aliases
|
|
43
48
|
"""
|
|
44
49
|
wl.add_command(click_func, name=name)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
@click.command(name=alias, help=click_func.help or "")
|
|
49
|
-
@click.pass_context
|
|
50
|
-
def alias_func(ctx, *args, **kwargs):
|
|
51
|
-
return click_func(click.get_current_context().args, **kwargs)
|
|
52
|
-
|
|
53
|
-
wl.add_command(alias_func, name=alias)
|
|
50
|
+
for alias in aliases or ():
|
|
51
|
+
wl.add_command(click_func, name=alias)
|
|
54
52
|
|
|
55
53
|
|
|
56
54
|
def setup_commands():
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Build commands package (registered lazily via COMMAND_TABLE)."""
|
|
@@ -23,28 +23,6 @@ def build_project_full() -> None:
|
|
|
23
23
|
coordinator.build_project_full()
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
def build_windows() -> None:
|
|
27
|
-
"""Build the project on Windows."""
|
|
28
|
-
try:
|
|
29
|
-
coordinator = BuildCoordinator()
|
|
30
|
-
coordinator.build_windows()
|
|
31
|
-
except Exception as e:
|
|
32
|
-
from wl_cli.exceptions import CommandError
|
|
33
|
-
|
|
34
|
-
raise CommandError(f"Build failed: {e}")
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def build_unix() -> None:
|
|
38
|
-
"""Build the project on Unix-like systems."""
|
|
39
|
-
try:
|
|
40
|
-
coordinator = BuildCoordinator()
|
|
41
|
-
coordinator.build_unix()
|
|
42
|
-
except Exception as e:
|
|
43
|
-
from wl_cli.exceptions import CommandError
|
|
44
|
-
|
|
45
|
-
raise CommandError(f"Build failed: {e}")
|
|
46
|
-
|
|
47
|
-
|
|
48
26
|
def build_project() -> None:
|
|
49
27
|
"""Build the project based on the current platform."""
|
|
50
28
|
try:
|
|
@@ -60,8 +38,6 @@ def build_project() -> None:
|
|
|
60
38
|
__all__ = [
|
|
61
39
|
"is_rust_enabled",
|
|
62
40
|
"build_project_full",
|
|
63
|
-
"build_windows",
|
|
64
|
-
"build_unix",
|
|
65
41
|
"build_project",
|
|
66
42
|
"EnvironmentDetector",
|
|
67
43
|
"StubsManager",
|