Class: Gitlab::SecretDetection::Core::Ruleset

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/secret_detection/core/ruleset.rb

Constant Summary collapse

RulesetParseError =

RulesetParseError is thrown when the code fails to parse the ruleset file from the given path

Class.new(StandardError)
RulesetCompilationError =

RulesetCompilationError is thrown when the code fails to compile the predefined rulesets

Class.new(StandardError)
RULESET_FILE_PATH =

file path where the secrets ruleset file is located

File.expand_path('secret_push_protection_rules.toml', __dir__)

Instance Method Summary collapse

Constructor Details

#initialize(path: RULESET_FILE_PATH, logger: Logger.new($stdout)) ⇒ Ruleset

Returns a new instance of Ruleset.



21
22
23
24
# File 'lib/gitlab/secret_detection/core/ruleset.rb', line 21

def initialize(path: RULESET_FILE_PATH, logger: Logger.new($stdout))
  @path = path
  @logger = logger
end

Instance Method Details

#extract_ruleset_versionObject



32
33
34
35
36
37
38
39
# File 'lib/gitlab/secret_detection/core/ruleset.rb', line 32

def extract_ruleset_version
  @ruleset_version ||= if File.readable?(RULESET_FILE_PATH)
                         first_line = File.open(RULESET_FILE_PATH, &:gets)
                         first_line&.split(":")&.[](1)&.strip
                       end
rescue StandardError => e
  logger.error(message: "Failed to extract Secret Detection Ruleset version from ruleset file: #{e.message}")
end

#rules(force_fetch: false) ⇒ Object



26
27
28
29
30
# File 'lib/gitlab/secret_detection/core/ruleset.rb', line 26

def rules(force_fetch: false)
  return @rule_data unless @rule_data.nil? || force_fetch

  @rule_data = parse_ruleset
end