yaml-linter 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/yaml-linter +10 -0
  3. data/lib/yaml-linter.rb +27 -0
  4. metadata +59 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: ca5bd4f1f861f9a6c4f719cbe447414d21581a022e4f0f8e796ed4c102fbd652
4
+ data.tar.gz: c8a7694528ba9a9ff52baeec0298a587b37fa91a0bc07e847e9b74e000062ea6
5
+ SHA512:
6
+ metadata.gz: f4541924d42a2a0d11d9169bfe7e28b3da21bae4258718c0fbe6e784d3b16b6371fa579646a616004583b8043108fc4acc3ffde7556905fe70ecb41a67bd9df4
7
+ data.tar.gz: 8301c17ea59f108e9ce59ca1c0721609e0155b11a255af7e41afa22343ad2e03d17f7568b8890cc92c76ad2e29d2406606aab641d509fa4e457b4bf846e69aee
data/bin/yaml-linter ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'yaml-linter'
4
+ errors = YamlLinter.lint(ARGV[0])
5
+ if errors.size > 0
6
+ puts errors
7
+ exit 1
8
+ else
9
+ puts "Linted OK"
10
+ end
@@ -0,0 +1,27 @@
1
+ require 'psych'
2
+
3
+ module YamlLinter
4
+ extend self
5
+
6
+ def lint(path)
7
+ document = Psych.parse_file(path)
8
+
9
+ errors = []
10
+ document.each do |node|
11
+ if node.mapping?
12
+ keys = node.children.each_slice(2).map(&:first)
13
+ duplicates = keys
14
+ .group_by { |k| k.value }
15
+ .select { |k, v| v.size > 1 }
16
+ if duplicates.size > 0
17
+ duplicates.each do |key, instances|
18
+ locations = instances.map { |k| "line #{k.start_line} column #{k.start_column}" }
19
+ errors << "Duplicated key '#{key}' found at: #{locations.join(', ')}"
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ errors
26
+ end
27
+ end
metadata ADDED
@@ -0,0 +1,59 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yaml-linter
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Simon Hildebrandt
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-11-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: psych
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ description: A Ruby gem for common-sense checks for YAML files
28
+ email: simonhildebrandt@gmail.com
29
+ executables:
30
+ - yaml-linter
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - bin/yaml-linter
35
+ - lib/yaml-linter.rb
36
+ homepage: https://github.com/simonhildebrandt/yaml-linter
37
+ licenses:
38
+ - MIT
39
+ metadata: {}
40
+ post_install_message:
41
+ rdoc_options: []
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '3.0'
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirements: []
55
+ rubygems_version: 3.5.16
56
+ signing_key:
57
+ specification_version: 4
58
+ summary: Common-sense checks for YAML files
59
+ test_files: []