Skip to content

Commit e02616d

Browse files
committed
CM-42089 add ruby restore support
1 parent 56a773b commit e02616d

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

cycode/cli/files_collector/sca/ruby/__init__.py

Whitespace-only changes.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import os
2+
from typing import List, Optional
3+
4+
import click
5+
6+
from cycode.cli.files_collector.sca.base_restore_dependencies import BaseRestoreDependencies
7+
from cycode.cli.models import Document
8+
9+
RUBY_PROJECT_FILE_EXTENSIONS = ['Gemfile']
10+
RUBY_LOCK_FILE_NAME = 'Gemfile.lock'
11+
12+
class RestoreRubyDependencies(BaseRestoreDependencies):
13+
def __init__(self, context: click.Context, is_git_diff: bool, command_timeout: int) -> None:
14+
super().__init__(context, is_git_diff, command_timeout)
15+
16+
def is_project(self, document: Document) -> bool:
17+
return any(document.path.endswith(ext) for ext in RUBY_PROJECT_FILE_EXTENSIONS)
18+
19+
def get_commands(self, manifest_file_path: str) -> List[List[str]]:
20+
return [['/opt/homebrew/opt/ruby/bin/bundle', '--quiet']]
21+
22+
def get_lock_file_name(self) -> str:
23+
return RUBY_LOCK_FILE_NAME
24+
25+
def verify_restore_file_already_exist(self, restore_file_path: str) -> bool:
26+
return os.path.isfile(restore_file_path)
27+
28+
def get_working_directory(self, document: Document) -> Optional[str]:
29+
return os.path.dirname(document.absolute_path)

cycode/cli/files_collector/sca/sca_code_scanner.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from cycode.cli.files_collector.sca.maven.restore_maven_dependencies import RestoreMavenDependencies
1111
from cycode.cli.files_collector.sca.npm.restore_npm_dependencies import RestoreNpmDependencies
1212
from cycode.cli.files_collector.sca.nuget.restore_nuget_dependencies import RestoreNugetDependencies
13+
from cycode.cli.files_collector.sca.ruby.restore_ruby_dependencies import RestoreRubyDependencies
1314
from cycode.cli.files_collector.sca.sbt.restore_sbt_dependencies import RestoreSbtDependencies
1415
from cycode.cli.models import Document
1516
from cycode.cli.utils.git_proxy import git_proxy
@@ -138,6 +139,7 @@ def restore_handlers(context: click.Context, is_git_diff: bool) -> List[BaseRest
138139
RestoreGoDependencies(context, is_git_diff, BUILD_DEP_TREE_TIMEOUT),
139140
RestoreNugetDependencies(context, is_git_diff, BUILD_DEP_TREE_TIMEOUT),
140141
RestoreNpmDependencies(context, is_git_diff, BUILD_DEP_TREE_TIMEOUT),
142+
RestoreRubyDependencies(context, is_git_diff, BUILD_DEP_TREE_TIMEOUT)
141143
]
142144

143145

0 commit comments

Comments
 (0)