Skip to content

Commit b9f272f

Browse files
authored
updated file behavior docs and skipping dirs in file search (#59)
* updated file behavior docs and skipping dirs in file search
1 parent 585e797 commit b9f272f

File tree

3 files changed

+30
-12
lines changed

3 files changed

+30
-12
lines changed

README.md

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ The Socket Security CLI was created to enable integrations with other tools like
55
## Usage
66

77
```` shell
8-
socketcli [-h] [--api-token API_TOKEN] [--repo REPO] [--integration {api,github,gitlab}] [--owner OWNER] [--branch BRANCH]
9-
[--committers [COMMITTERS ...]] [--pr-number PR_NUMBER] [--commit-message COMMIT_MESSAGE] [--commit-sha COMMIT_SHA]
10-
[--target-path TARGET_PATH] [--sbom-file SBOM_FILE] [--files FILES] [--default-branch] [--pending-head]
11-
[--generate-license] [--enable-debug] [--enable-json] [--enable-sarif] [--disable-overview] [--disable-security-issue]
8+
socketcli [-h] [--api-token API_TOKEN] [--repo REPO] [--integration {api,github,gitlab}] [--owner OWNER] [--branch BRANCH]
9+
[--committers [COMMITTERS ...]] [--pr-number PR_NUMBER] [--commit-message COMMIT_MESSAGE] [--commit-sha COMMIT_SHA]
10+
[--target-path TARGET_PATH] [--sbom-file SBOM_FILE] [--files FILES] [--default-branch] [--pending-head]
11+
[--generate-license] [--enable-debug] [--enable-json] [--enable-sarif] [--disable-overview] [--disable-security-issue]
1212
[--allow-unverified] [--ignore-commit-files] [--disable-blocking] [--scm SCM] [--timeout TIMEOUT]
1313
[--exclude-license-details]
1414
````
@@ -75,9 +75,30 @@ If you don't want to provide the Socket API Token every time then you can use th
7575
| --scm | False | api | Source control management type |
7676
| --timeout | False | | Timeout in seconds for API requests |
7777

78+
## File Selection Behavior
79+
80+
The CLI determines which files to scan based on the following logic:
81+
82+
1. **Git Commit Files**: By default, the CLI checks files changed in the current git commit first. If any of these files match supported manifest patterns (like package.json, requirements.txt, etc.), a scan is triggered.
83+
84+
2. **`--files` Parameter**: If no git commit exists, or no manifest files are found in the commit changes, the CLI checks files specified via the `--files` parameter. This parameter accepts a JSON array of file paths.
85+
86+
3. **`--ignore-commit-files`**: When this flag is set, git commit files are ignored completely, and only files specified in `--files` are considered. This also forces a scan regardless of whether manifest files are present.
87+
88+
4. **No Manifest Files**: If no manifest files are found in either git commit changes or `--files` (and `--ignore-commit-files` is not set), the scan is skipped.
89+
90+
> **Note**: The CLI does not scan only the specified files - it uses them to determine whether a scan should be performed. When a scan is triggered, it searches the entire `--target-path` for all supported manifest files.
91+
92+
### Examples
93+
94+
- **Commit with manifest file**: If your commit includes changes to `package.json`, a scan will be triggered automatically.
95+
- **Commit without manifest files**: If your commit only changes non-manifest files (like `.github/workflows/socket.yaml`), no scan will be performed unless you use `--files` or `--ignore-commit-files`.
96+
- **Using `--files`**: If you specify `--files '["package.json"]'`, the CLI will check if this file exists and is a manifest file before triggering a scan.
97+
- **Using `--ignore-commit-files`**: This forces a scan of all manifest files in the target path, regardless of what's in your commit.
98+
7899
## Development
79100
80-
This project uses `pyproject.toml` as the primary dependency specification.
101+
This project uses `pyproject.toml` as the primary dependency specification.
81102
82103
### Development Workflows
83104
@@ -132,8 +153,3 @@ Implementation targets:
132153
### Environment Variables
133154
134155
- `SOCKET_SDK_PATH`: Path to local socket-sdk-python repository (default: ../socket-sdk-python)
135-
136-
### Running tests:
137-
138-
#### Run all tests:
139-
```

socketsecurity/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
__author__ = 'socket.dev'
2-
__version__ = '2.0.8'
2+
__version__ = '2.0.9'

socketsecurity/core/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import logging
2+
import os
23
import sys
34
import time
45
from dataclasses import asdict
@@ -146,7 +147,8 @@ def find_files(path: str) -> List[str]:
146147
glob_start = time.time()
147148
glob_files = glob(file_path, recursive=True)
148149
for glob_file in glob_files:
149-
if glob_file not in files:
150+
# Only add if it's a file, not a directory
151+
if glob_file not in files and os.path.isfile(glob_file):
150152
files.add(glob_file)
151153
glob_end = time.time()
152154
glob_total_time = glob_end - glob_start

0 commit comments

Comments
 (0)