Class: RosettAi::Gitlab::Validators::SupplementaryGitlabCiYamlValidator
- Inherits:
-
Object
- Object
- RosettAi::Gitlab::Validators::SupplementaryGitlabCiYamlValidator
- Defined in:
- lib/rosett_ai/gitlab/validators/supplementary_gitlab_ci_yaml_validator.rb
Overview
Validates GitLab CI YAML files for syntax correctness.
Uses Psych.parse (AST-only parsing) rather than YAML.safe_load so that GitLab CI custom tags like !reference are accepted without needing explicit constructors. This catches genuine YAML syntax errors (e.g. double-quoted strings misinterpreted as YAML scalars) while remaining compatible with GitLab-specific extensions.
Constant Summary collapse
- CI_ROOT_FILE =
'.gitlab-ci.yml'- CI_FILES_DIR =
'.gitlab-ci-files'
Instance Attribute Summary collapse
-
#results ⇒ Object
readonly
Returns the value of attribute results.
Instance Method Summary collapse
-
#initialize(project_dir: Dir.pwd) ⇒ SupplementaryGitlabCiYamlValidator
constructor
A new instance of SupplementaryGitlabCiYamlValidator.
- #valid? ⇒ Boolean
- #validate ⇒ Object
Constructor Details
#initialize(project_dir: Dir.pwd) ⇒ SupplementaryGitlabCiYamlValidator
Returns a new instance of SupplementaryGitlabCiYamlValidator.
25 26 27 28 |
# File 'lib/rosett_ai/gitlab/validators/supplementary_gitlab_ci_yaml_validator.rb', line 25 def initialize(project_dir: Dir.pwd) @project_dir = Pathname.new(project_dir) @results = { valid: [], invalid: [] } end |
Instance Attribute Details
#results ⇒ Object (readonly)
Returns the value of attribute results.
23 24 25 |
# File 'lib/rosett_ai/gitlab/validators/supplementary_gitlab_ci_yaml_validator.rb', line 23 def results @results end |
Instance Method Details
#valid? ⇒ Boolean
40 41 42 43 |
# File 'lib/rosett_ai/gitlab/validators/supplementary_gitlab_ci_yaml_validator.rb', line 40 def valid? validate if @results[:valid].empty? && @results[:invalid].empty? @results[:invalid].empty? end |
#validate ⇒ Object
30 31 32 33 34 35 36 37 38 |
# File 'lib/rosett_ai/gitlab/validators/supplementary_gitlab_ci_yaml_validator.rb', line 30 def validate @results = { valid: [], invalid: [] } files = ci_files return @results if files.empty? files.each { |file| validate_file(file) } @results end |