cycode 3.4.1.dev5__tar.gz → 3.4.2.dev1__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.
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/PKG-INFO +3 -3
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/README.md +2 -2
- cycode-3.4.2.dev1/cycode/__init__.py +1 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/commit_range_scanner.py +9 -2
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/consts.py +1 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/commit_range_documents.py +47 -11
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/pyproject.toml +1 -1
- cycode-3.4.1.dev5/cycode/__init__.py +0 -1
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/LICENCE +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/__main__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/app.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/ai_remediation/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/ai_remediation/ai_remediation_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/ai_remediation/apply_fix.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/ai_remediation/print_remediation.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/auth/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/auth/auth_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/auth/auth_common.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/auth/auth_manager.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/auth/models.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/configure/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/configure/configure_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/configure/consts.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/configure/messages.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/configure/prompts.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/ignore/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/ignore/ignore_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/mcp/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/mcp/mcp_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/report/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/report/report_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/report/sbom/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/report/sbom/common.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/report/sbom/path/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/report/sbom/path/path_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/report/sbom/repository_url/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/report/sbom/repository_url/repository_url_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/report/sbom/sbom_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/report/sbom/sbom_report_file.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/aggregation_report.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/code_scanner.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/commit_history/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/commit_history/commit_history_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/detection_excluder.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/path/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/path/path_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/pre_commit/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/pre_commit/pre_commit_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/pre_receive/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/pre_receive/pre_receive_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/remote_url_resolver.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/repository/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/repository/repository_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/scan_ci/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/scan_ci/ci_integrations.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/scan_ci/scan_ci_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/scan_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/scan_parameters.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/scan_result.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/status/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/status/get_cli_status.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/status/models.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/status/status_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/status/version_command.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/cli_types.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/config.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/console.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/exceptions/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/exceptions/custom_exceptions.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/exceptions/handle_ai_remediation_errors.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/exceptions/handle_auth_errors.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/exceptions/handle_errors.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/exceptions/handle_report_sbom_errors.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/exceptions/handle_scan_errors.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/file_excluder.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/iac/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/iac/tf_content_generator.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/models/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/models/in_memory_zip.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/path_documents.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/repository_documents.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/base_restore_dependencies.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/go/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/go/restore_go_dependencies.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/maven/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/maven/restore_gradle_dependencies.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/maven/restore_maven_dependencies.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/npm/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/npm/restore_npm_dependencies.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/nuget/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/nuget/restore_nuget_dependencies.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/ruby/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/ruby/restore_ruby_dependencies.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/sbt/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/sbt/restore_sbt_dependencies.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/sca_file_collector.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/walk_ignore.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/zip_documents.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/logger.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/main.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/models.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/console_printer.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/json_printer.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/printer_base.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/rich_printer.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/tables/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/tables/sca_table_printer.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/tables/table.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/tables/table_models.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/tables/table_printer.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/tables/table_printer_base.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/text_printer.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/utils/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/utils/code_snippet_syntax.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/utils/detection_data.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/utils/detection_ordering/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/utils/detection_ordering/common_ordering.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/utils/detection_ordering/sca_ordering.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/utils/rich_helpers.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/user_settings/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/user_settings/base_file_manager.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/user_settings/config_file_manager.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/user_settings/configuration_manager.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/user_settings/credentials_manager.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/user_settings/jwt_creator.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/enum_utils.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/get_api_client.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/git_proxy.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/ignore_utils.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/jwt_utils.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/path_utils.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/progress_bar.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/scan_batch.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/scan_utils.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/sentry.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/shell_executor.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/string_utils.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/task_timer.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/version_checker.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/utils/yaml_utils.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/config.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/__init__.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/auth_client.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/client_creator.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/config.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/config_dev.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/cycode_client.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/cycode_client_base.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/cycode_dev_based_client.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/cycode_token_based_client.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/headers.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/logger.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/models.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/report_client.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/scan_client.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cyclient/scan_config_base.py +0 -0
- {cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/logger.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cycode
|
|
3
|
-
Version: 3.4.
|
|
3
|
+
Version: 3.4.2.dev1
|
|
4
4
|
Summary: Boost security in your dev lifecycle via SAST, SCA, Secrets & IaC scanning.
|
|
5
5
|
Home-page: https://github.com/cycodehq/cycode-cli
|
|
6
6
|
License: MIT
|
|
@@ -277,7 +277,7 @@ Perform the following steps to install the pre-commit hook:
|
|
|
277
277
|
```yaml
|
|
278
278
|
repos:
|
|
279
279
|
- repo: https://github.com/cycodehq/cycode-cli
|
|
280
|
-
rev: v3.2
|
|
280
|
+
rev: v3.4.2
|
|
281
281
|
hooks:
|
|
282
282
|
- id: cycode
|
|
283
283
|
stages:
|
|
@@ -289,7 +289,7 @@ Perform the following steps to install the pre-commit hook:
|
|
|
289
289
|
```yaml
|
|
290
290
|
repos:
|
|
291
291
|
- repo: https://github.com/cycodehq/cycode-cli
|
|
292
|
-
rev: v3.2
|
|
292
|
+
rev: v3.4.2
|
|
293
293
|
hooks:
|
|
294
294
|
- id: cycode
|
|
295
295
|
stages:
|
|
@@ -233,7 +233,7 @@ Perform the following steps to install the pre-commit hook:
|
|
|
233
233
|
```yaml
|
|
234
234
|
repos:
|
|
235
235
|
- repo: https://github.com/cycodehq/cycode-cli
|
|
236
|
-
rev: v3.2
|
|
236
|
+
rev: v3.4.2
|
|
237
237
|
hooks:
|
|
238
238
|
- id: cycode
|
|
239
239
|
stages:
|
|
@@ -245,7 +245,7 @@ Perform the following steps to install the pre-commit hook:
|
|
|
245
245
|
```yaml
|
|
246
246
|
repos:
|
|
247
247
|
- repo: https://github.com/cycodehq/cycode-cli
|
|
248
|
-
rev: v3.2
|
|
248
|
+
rev: v3.4.2
|
|
249
249
|
hooks:
|
|
250
250
|
- id: cycode
|
|
251
251
|
stages:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '3.4.2.dev1' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
|
|
@@ -25,6 +25,7 @@ from cycode.cli.files_collector.commit_range_documents import (
|
|
|
25
25
|
get_diff_file_content,
|
|
26
26
|
get_diff_file_path,
|
|
27
27
|
get_pre_commit_modified_documents,
|
|
28
|
+
get_safe_head_reference_for_diff,
|
|
28
29
|
parse_commit_range_sast,
|
|
29
30
|
parse_commit_range_sca,
|
|
30
31
|
)
|
|
@@ -271,7 +272,9 @@ def _scan_sca_pre_commit(ctx: typer.Context, repo_path: str) -> None:
|
|
|
271
272
|
|
|
272
273
|
def _scan_secret_pre_commit(ctx: typer.Context, repo_path: str) -> None:
|
|
273
274
|
progress_bar = ctx.obj['progress_bar']
|
|
274
|
-
|
|
275
|
+
repo = git_proxy.get_repo(repo_path)
|
|
276
|
+
head_reference = get_safe_head_reference_for_diff(repo)
|
|
277
|
+
diff_index = repo.index.diff(head_reference, create_patch=True, R=True)
|
|
275
278
|
|
|
276
279
|
progress_bar.set_section_length(ScanProgressBarSection.PREPARE_LOCAL_FILES, len(diff_index))
|
|
277
280
|
|
|
@@ -279,7 +282,11 @@ def _scan_secret_pre_commit(ctx: typer.Context, repo_path: str) -> None:
|
|
|
279
282
|
for diff in diff_index:
|
|
280
283
|
progress_bar.update(ScanProgressBarSection.PREPARE_LOCAL_FILES)
|
|
281
284
|
documents_to_scan.append(
|
|
282
|
-
Document(
|
|
285
|
+
Document(
|
|
286
|
+
get_path_by_os(get_diff_file_path(diff, repo=repo)),
|
|
287
|
+
get_diff_file_content(diff),
|
|
288
|
+
is_git_diff_format=True,
|
|
289
|
+
)
|
|
283
290
|
)
|
|
284
291
|
documents_to_scan = excluder.exclude_irrelevant_documents_to_scan(consts.SECRET_SCAN_TYPE, documents_to_scan)
|
|
285
292
|
|
|
@@ -261,6 +261,7 @@ SCAN_STATUS_ERROR = 'Error'
|
|
|
261
261
|
# git consts
|
|
262
262
|
COMMIT_DIFF_DELETED_FILE_CHANGE_TYPE = 'D'
|
|
263
263
|
GIT_HEAD_COMMIT_REV = 'HEAD'
|
|
264
|
+
GIT_EMPTY_TREE_OBJECT = '4b825dc642cb6eb9a060e54bf8d69288fbee4904'
|
|
264
265
|
EMPTY_COMMIT_SHA = '0000000000000000000000000000000000000000'
|
|
265
266
|
GIT_PUSH_OPTION_COUNT_ENV_VAR_NAME = 'GIT_PUSH_OPTION_COUNT'
|
|
266
267
|
GIT_PUSH_OPTION_ENV_VAR_PREFIX = 'GIT_PUSH_OPTION_'
|
{cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/commit_range_documents.py
RENAMED
|
@@ -22,6 +22,31 @@ if TYPE_CHECKING:
|
|
|
22
22
|
logger = get_logger('Commit Range Collector')
|
|
23
23
|
|
|
24
24
|
|
|
25
|
+
def get_safe_head_reference_for_diff(repo: 'Repo') -> str:
|
|
26
|
+
"""Get a safe reference to use for diffing against the current HEAD.
|
|
27
|
+
In repositories with no commits, HEAD doesn't exist, so we return the empty tree hash.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
repo: Git repository object
|
|
31
|
+
|
|
32
|
+
Returns:
|
|
33
|
+
Either "HEAD" string if commits exist, or empty tree hash if no commits exist
|
|
34
|
+
"""
|
|
35
|
+
try:
|
|
36
|
+
repo.rev_parse(consts.GIT_HEAD_COMMIT_REV)
|
|
37
|
+
return consts.GIT_HEAD_COMMIT_REV
|
|
38
|
+
except Exception as e: # actually gitdb.exc.BadObject; no import because of lazy loading
|
|
39
|
+
logger.debug(
|
|
40
|
+
'Repository has no commits, using empty tree hash for diffs, %s',
|
|
41
|
+
{'repo_path': repo.working_tree_dir},
|
|
42
|
+
exc_info=e,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
# Repository has no commits, use the universal empty tree hash
|
|
46
|
+
# This is the standard Git approach for initial commits
|
|
47
|
+
return consts.GIT_EMPTY_TREE_OBJECT
|
|
48
|
+
|
|
49
|
+
|
|
25
50
|
def _does_reach_to_max_commits_to_scan_limit(commit_ids: list[str], max_commits_count: Optional[int]) -> bool:
|
|
26
51
|
if max_commits_count is None:
|
|
27
52
|
return False
|
|
@@ -62,7 +87,7 @@ def collect_commit_range_diff_documents(
|
|
|
62
87
|
for diff in diff_index:
|
|
63
88
|
commit_documents_to_scan.append(
|
|
64
89
|
Document(
|
|
65
|
-
path=get_path_by_os(get_diff_file_path(diff)),
|
|
90
|
+
path=get_path_by_os(get_diff_file_path(diff, repo=repo)),
|
|
66
91
|
content=get_diff_file_content(diff),
|
|
67
92
|
is_git_diff_format=True,
|
|
68
93
|
unique_id=commit_id,
|
|
@@ -141,7 +166,7 @@ def get_commit_range_modified_documents(
|
|
|
141
166
|
for diff in modified_files_diff:
|
|
142
167
|
progress_bar.update(progress_bar_section)
|
|
143
168
|
|
|
144
|
-
file_path = get_path_by_os(get_diff_file_path(diff))
|
|
169
|
+
file_path = get_path_by_os(get_diff_file_path(diff, repo=repo))
|
|
145
170
|
|
|
146
171
|
diff_documents.append(
|
|
147
172
|
Document(
|
|
@@ -186,16 +211,24 @@ def parse_pre_receive_input() -> str:
|
|
|
186
211
|
return pre_receive_input.splitlines()[0]
|
|
187
212
|
|
|
188
213
|
|
|
189
|
-
def get_diff_file_path(diff: 'Diff', relative: bool = False) -> Optional[str]:
|
|
214
|
+
def get_diff_file_path(diff: 'Diff', relative: bool = False, repo: Optional['Repo'] = None) -> Optional[str]:
|
|
190
215
|
if relative:
|
|
191
216
|
# relative to the repository root
|
|
192
217
|
return diff.b_path if diff.b_path else diff.a_path
|
|
193
218
|
|
|
219
|
+
# Try blob-based paths first (most reliable when available)
|
|
194
220
|
if diff.b_blob:
|
|
195
221
|
return diff.b_blob.abspath
|
|
196
222
|
if diff.a_blob:
|
|
197
223
|
return diff.a_blob.abspath
|
|
198
224
|
|
|
225
|
+
# Fallback: construct an absolute path from a relative path
|
|
226
|
+
# This handles renames and other cases where blobs might be None
|
|
227
|
+
if repo and repo.working_tree_dir:
|
|
228
|
+
target_path = diff.b_path if diff.b_path else diff.a_path
|
|
229
|
+
if target_path:
|
|
230
|
+
return os.path.abspath(os.path.join(repo.working_tree_dir, target_path))
|
|
231
|
+
|
|
199
232
|
return None
|
|
200
233
|
|
|
201
234
|
|
|
@@ -213,12 +246,13 @@ def get_pre_commit_modified_documents(
|
|
|
213
246
|
diff_documents = []
|
|
214
247
|
|
|
215
248
|
repo = git_proxy.get_repo(repo_path)
|
|
216
|
-
|
|
249
|
+
head_reference = get_safe_head_reference_for_diff(repo)
|
|
250
|
+
diff_index = repo.index.diff(head_reference, create_patch=True, R=True)
|
|
217
251
|
progress_bar.set_section_length(progress_bar_section, len(diff_index))
|
|
218
252
|
for diff in diff_index:
|
|
219
253
|
progress_bar.update(progress_bar_section)
|
|
220
254
|
|
|
221
|
-
file_path = get_path_by_os(get_diff_file_path(diff))
|
|
255
|
+
file_path = get_path_by_os(get_diff_file_path(diff, repo=repo))
|
|
222
256
|
|
|
223
257
|
diff_documents.append(
|
|
224
258
|
Document(
|
|
@@ -228,9 +262,11 @@ def get_pre_commit_modified_documents(
|
|
|
228
262
|
)
|
|
229
263
|
)
|
|
230
264
|
|
|
231
|
-
|
|
232
|
-
if
|
|
233
|
-
|
|
265
|
+
# Only get file content from HEAD if HEAD exists (not the empty tree hash)
|
|
266
|
+
if head_reference == consts.GIT_HEAD_COMMIT_REV:
|
|
267
|
+
file_content = _get_file_content_from_commit_diff(repo, head_reference, diff)
|
|
268
|
+
if file_content:
|
|
269
|
+
git_head_documents.append(Document(file_path, file_content))
|
|
234
270
|
|
|
235
271
|
if os.path.exists(file_path):
|
|
236
272
|
file_content = get_file_content(file_path)
|
|
@@ -274,13 +310,13 @@ def parse_commit_range_sast(commit_range: str, path: str) -> tuple[Optional[str]
|
|
|
274
310
|
else:
|
|
275
311
|
# Git commands like 'git diff <commit>' compare against HEAD.
|
|
276
312
|
from_spec = commit_range
|
|
277
|
-
to_spec =
|
|
313
|
+
to_spec = consts.GIT_HEAD_COMMIT_REV
|
|
278
314
|
|
|
279
315
|
# If a spec is empty (e.g., from '..master'), default it to 'HEAD'
|
|
280
316
|
if not from_spec:
|
|
281
|
-
from_spec =
|
|
317
|
+
from_spec = consts.GIT_HEAD_COMMIT_REV
|
|
282
318
|
if not to_spec:
|
|
283
|
-
to_spec =
|
|
319
|
+
to_spec = consts.GIT_HEAD_COMMIT_REV
|
|
284
320
|
|
|
285
321
|
try:
|
|
286
322
|
# Use rev_parse to resolve each specifier to its full commit SHA
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "cycode"
|
|
3
|
-
version = "3.4.
|
|
3
|
+
version = "3.4.2.dev1" # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
|
|
4
4
|
description = "Boost security in your dev lifecycle via SAST, SCA, Secrets & IaC scanning."
|
|
5
5
|
keywords=["secret-scan", "cycode", "devops", "token", "secret", "security", "cycode", "code"]
|
|
6
6
|
authors = ["Cycode <support@cycode.com>"]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '3.4.1.dev5' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/ai_remediation/ai_remediation_command.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/report/sbom/repository_url/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/pre_commit/pre_commit_command.py
RENAMED
|
File without changes
|
|
File without changes
|
{cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/pre_receive/pre_receive_command.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/apps/scan/repository/repository_command.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/exceptions/handle_ai_remediation_errors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/iac/tf_content_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/base_restore_dependencies.py
RENAMED
|
File without changes
|
|
File without changes
|
{cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/go/restore_go_dependencies.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/files_collector/sca/sca_file_collector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/utils/detection_ordering/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{cycode-3.4.1.dev5 → cycode-3.4.2.dev1}/cycode/cli/printers/utils/detection_ordering/sca_ordering.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|