Skip to content

Commit 1ab83ab

Browse files
authored
Add --reach-disable-analysis-splitting flag and fix Docker entrypoint (#131)
- Add new CLI option --reach-disable-analysis-splitting that maps to coana's --disable-analysis-splitting - Implement full parameter chain: config field, argument parser, reachability analyzer - Add flexible Docker entrypoint script to support both 'socketcli' prefix and direct argument patterns - Update Dockerfile to use new entrypoint script instead of direct socketcli command
1 parent c3d4a77 commit 1ab83ab

File tree

7 files changed

+39
-3
lines changed

7 files changed

+39
-3
lines changed

Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,8 @@ RUN if [ "$USE_LOCAL_INSTALL" = "true" ]; then \
9999
# Create workspace directory with proper permissions
100100
RUN mkdir -p /go/src && chmod -R 777 /go
101101

102-
ENTRYPOINT ["socketcli"]
102+
# Copy and setup entrypoint script
103+
COPY scripts/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
104+
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
105+
106+
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
66

77
[project]
88
name = "socketsecurity"
9-
version = "2.2.32"
9+
version = "2.2.33"
1010
requires-python = ">= 3.10"
1111
license = {"file" = "LICENSE"}
1212
dependencies = [

scripts/docker-entrypoint.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/bin/sh
2+
3+
# Docker entrypoint script to support both patterns:
4+
# docker run socketdev/cli socketcli --params
5+
# docker run socketdev/cli --cli-params
6+
7+
# Check if we have any arguments
8+
if [ $# -eq 0 ]; then
9+
# No arguments provided, run socketcli with no args (will show help)
10+
exec socketcli --help
11+
elif [ "$1" = "socketcli" ]; then
12+
# If first argument is "socketcli", shift it out and pass the rest to socketcli
13+
shift
14+
exec socketcli "$@"
15+
else
16+
# If first argument is not "socketcli", assume all arguments are for socketcli
17+
exec socketcli "$@"
18+
fi

socketsecurity/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
__author__ = 'socket.dev'
2-
__version__ = '2.2.32'
2+
__version__ = '2.2.33'
33
USER_AGENT = f'SocketPythonCLI/{__version__}'

socketsecurity/config.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class CliConfig:
6868
reach_analysis_memory_limit: Optional[int] = None
6969
reach_analysis_timeout: Optional[int] = None
7070
reach_disable_analytics: bool = False
71+
reach_disable_analysis_splitting: bool = False
7172
reach_ecosystems: Optional[List[str]] = None
7273
reach_exclude_paths: Optional[List[str]] = None
7374
reach_skip_cache: bool = False
@@ -129,6 +130,7 @@ def from_args(cls, args_list: Optional[List[str]] = None) -> 'CliConfig':
129130
'reach_analysis_timeout': args.reach_analysis_timeout,
130131
'reach_analysis_memory_limit': args.reach_analysis_memory_limit,
131132
'reach_disable_analytics': args.reach_disable_analytics,
133+
'reach_disable_analysis_splitting': args.reach_disable_analysis_splitting,
132134
'reach_ecosystems': args.reach_ecosystems.split(',') if args.reach_ecosystems else None,
133135
'reach_exclude_paths': args.reach_exclude_paths.split(',') if args.reach_exclude_paths else None,
134136
'reach_skip_cache': args.reach_skip_cache,
@@ -567,6 +569,12 @@ def create_argument_parser() -> argparse.ArgumentParser:
567569
action="store_true",
568570
help="Disable analytics sharing for reachability analysis"
569571
)
572+
reachability_group.add_argument(
573+
"--reach-disable-analysis-splitting",
574+
dest="reach_disable_analysis_splitting",
575+
action="store_true",
576+
help="Disable analysis splitting/bucketing for reachability analysis"
577+
)
570578
reachability_group.add_argument(
571579
"--reach-output-file",
572580
dest="reach_output_file",

socketsecurity/core/tools/reachability.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ def run_reachability_analysis(
9393
min_severity: Optional[str] = None,
9494
skip_cache: bool = False,
9595
disable_analytics: bool = False,
96+
disable_analysis_splitting: bool = False,
9697
repo_name: Optional[str] = None,
9798
branch_name: Optional[str] = None,
9899
version: Optional[str] = None,
@@ -115,6 +116,7 @@ def run_reachability_analysis(
115116
min_severity: Minimum severity level (info, low, moderate, high, critical)
116117
skip_cache: Skip cache usage
117118
disable_analytics: Disable analytics sharing
119+
disable_analysis_splitting: Disable analysis splitting
118120
repo_name: Repository name
119121
branch_name: Branch name
120122
version: Specific version of @coana-tech/cli to use
@@ -149,6 +151,9 @@ def run_reachability_analysis(
149151
if disable_analytics:
150152
cmd.append("--disable-analytics-sharing")
151153

154+
if disable_analysis_splitting:
155+
cmd.append("--disable-analysis-splitting")
156+
152157
# KEY POINT: Only add manifest tar hash if we have one
153158
if tar_hash:
154159
cmd.extend(["--run-without-docker", "--manifests-tar-hash", tar_hash])

socketsecurity/socketcli.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,7 @@ def main_code():
282282
min_severity=config.reach_min_severity,
283283
skip_cache=config.reach_skip_cache or False,
284284
disable_analytics=config.reach_disable_analytics or False,
285+
disable_analysis_splitting=config.reach_disable_analysis_splitting or False,
285286
repo_name=config.repo,
286287
branch_name=config.branch,
287288
version=config.reach_version,

0 commit comments

Comments
 (0)