yaml-lint-ng 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/yaml-lint +45 -0
- data/lib/yaml-lint.rb +80 -0
- metadata +49 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cde07a167f133b51a52f98fd9a07b15c1169642e
|
4
|
+
data.tar.gz: 58540d60e078614533834dea7e261a9adf838875
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0ecbce10999947527e1bb56387f311b1f57f4febed2de46b2fc41ba10014498456980b53dba960e4bb6f714e1acc566576c4d19e2d332a0e0b390e2c5c1158b4
|
7
|
+
data.tar.gz: 6e3280772dd5112945c75713791b9fcddfe172b24315135492b5b8f5a1ba2b737d0307529f486f91c67cb4eaf86cd4504ff82244a1d204166082c8502f1d625e
|
data/bin/yaml-lint
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
require 'optparse'
|
5
|
+
|
6
|
+
begin
|
7
|
+
require 'yaml-lint'
|
8
|
+
rescue LoadError
|
9
|
+
$: << File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
10
|
+
require 'yaml-lint'
|
11
|
+
end
|
12
|
+
|
13
|
+
options = {}
|
14
|
+
OptionParser.new do |opts|
|
15
|
+
opts.banner = "Usage: yaml-lint <file(s) or folder(s)>"
|
16
|
+
|
17
|
+
opts.on("-q", "--quiet", "Run quiet. Only log failing files.") do |q|
|
18
|
+
options[:quiet] = q
|
19
|
+
end
|
20
|
+
opts.on("-Q", "--very-quiet", "Run more quiet. Return code is the number of failed files.") do |q|
|
21
|
+
options[:veryquiet] = q
|
22
|
+
end
|
23
|
+
|
24
|
+
opts.on("-n", "--no-check-file-ext", "Do not check the file extension to match known yaml files.") do |n|
|
25
|
+
options[:nocheckfileext] = true
|
26
|
+
end
|
27
|
+
|
28
|
+
opts.on_tail("-h", "--help") do |q|
|
29
|
+
puts 'yaml-lint is a tool to check the syntax of your YAML files'
|
30
|
+
puts 'Usage: yaml-lint <file(s) or folder(s)>'
|
31
|
+
exit -1
|
32
|
+
end
|
33
|
+
end.parse!
|
34
|
+
|
35
|
+
puts "Checking the content of #{ARGV}" unless options[:quiet]
|
36
|
+
|
37
|
+
failed = 0
|
38
|
+
|
39
|
+
ARGV.each do|file|
|
40
|
+
lint = YamlLint.new(file, options)
|
41
|
+
failed = failed + lint.do_lint
|
42
|
+
end
|
43
|
+
|
44
|
+
puts 'Done.' unless options[:quiet]
|
45
|
+
exit failed
|
data/lib/yaml-lint.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
module Logging
|
6
|
+
ESCAPES = { :green => "\033[32m",
|
7
|
+
:yellow => "\033[33m",
|
8
|
+
:red => "\033[31m",
|
9
|
+
:reset => "\033[0m" }
|
10
|
+
|
11
|
+
def info(message)
|
12
|
+
emit(:message => message, :color => :green) unless @config[:quiet]
|
13
|
+
end
|
14
|
+
|
15
|
+
def warn(message)
|
16
|
+
emit(:message => message, :color => :yellow) unless @config[:veryquiet]
|
17
|
+
end
|
18
|
+
|
19
|
+
def error(message)
|
20
|
+
emit(:message => message, :color => :red) unless @config[:veryquiet]
|
21
|
+
end
|
22
|
+
|
23
|
+
def emit(opts={})
|
24
|
+
color = opts[:color]
|
25
|
+
message = opts[:message]
|
26
|
+
print ESCAPES[color]
|
27
|
+
print message
|
28
|
+
print ESCAPES[:reset]
|
29
|
+
print "\n"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class YamlLint
|
34
|
+
include Logging
|
35
|
+
|
36
|
+
def initialize(file, config={})
|
37
|
+
@file = file
|
38
|
+
@config = config
|
39
|
+
@config[:quiet] = true if @config[:veryquiet]
|
40
|
+
@config[:nocheckfileext] ||= false
|
41
|
+
end
|
42
|
+
|
43
|
+
def do_lint
|
44
|
+
unless File.exists? @file
|
45
|
+
error "File #{@file} does not exist"
|
46
|
+
else
|
47
|
+
if File.directory? @file
|
48
|
+
return self.parse_directory @file
|
49
|
+
else
|
50
|
+
return self.parse_file @file
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def parse_directory(directory)
|
56
|
+
Dir.glob("#{directory}/*").inject(0) do |mem, fdir|
|
57
|
+
if File.directory? fdir
|
58
|
+
mem + parse_directory(fdir)
|
59
|
+
else
|
60
|
+
mem + parse_file(fdir)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def parse_file(file)
|
66
|
+
if (not File.extname(file) =~ /.(yaml|yml)$/) && (not @config[:nocheckfileext])
|
67
|
+
error "The extension of the file #{file} should be .yaml or .yml"
|
68
|
+
return 1
|
69
|
+
end
|
70
|
+
begin
|
71
|
+
YAML.load_file(file)
|
72
|
+
rescue Exception => err
|
73
|
+
error "File : #{file}, error: #{err}"
|
74
|
+
return 1
|
75
|
+
else
|
76
|
+
info "File : #{file}, Syntax OK"
|
77
|
+
return 0
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
metadata
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: yaml-lint-ng
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.5
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Julien Fabre
|
8
|
+
- Marvin Frick
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2015-06-04 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Check if your YAML files can be loaded.
|
15
|
+
email:
|
16
|
+
- ju.pryz@gmail.com
|
17
|
+
- marvin.frick@sinnerschrader.com
|
18
|
+
executables:
|
19
|
+
- yaml-lint
|
20
|
+
extensions: []
|
21
|
+
extra_rdoc_files: []
|
22
|
+
files:
|
23
|
+
- bin/yaml-lint
|
24
|
+
- lib/yaml-lint.rb
|
25
|
+
homepage: https://github.com/MrMarvin/yaml-lint
|
26
|
+
licenses:
|
27
|
+
- MIT
|
28
|
+
metadata: {}
|
29
|
+
post_install_message:
|
30
|
+
rdoc_options: []
|
31
|
+
require_paths:
|
32
|
+
- lib
|
33
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
requirements: []
|
44
|
+
rubyforge_project:
|
45
|
+
rubygems_version: 2.2.2
|
46
|
+
signing_key:
|
47
|
+
specification_version: 4
|
48
|
+
summary: Really simple YAML lint. Next interation.
|
49
|
+
test_files: []
|