yaml-lint 0.0.1
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 +29 -0
- data/lib/yaml-lint.rb +82 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b2b67729cb48d53e71145f812507b730219140ed
|
4
|
+
data.tar.gz: 84bdf134e0acae707050f7ad89e73df8c4b2cfcc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: be399913ebc9af60c94c9d1dcafdc75b67872cf385a7c202574d843a7f029608b54fb9a1c07b084f008f49d6fcd204216ebaf17f9f9d4d3f50c928c5bec04b0b
|
7
|
+
data.tar.gz: f2c3916a0a2a0fa6344a700f4f6da413967d435654fd56fcf840accce7ad5aedf765cd60ba25301e5f30db1b65ab6896e8e66cb52ab1ce0ee4c28a4318c04418
|
data/bin/yaml-lint
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'yaml-lint'
|
7
|
+
rescue LoadError
|
8
|
+
$: << File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
9
|
+
require 'yaml-lint'
|
10
|
+
end
|
11
|
+
|
12
|
+
if ARGV.any? {|arg| arg =~ /help|--help|-h/} or ARGV.empty?
|
13
|
+
puts 'yaml-lint is a tool to check the syntax of your YAML files'
|
14
|
+
puts 'Usage: yaml-lint <file(s) or folder(s)>'
|
15
|
+
exit 1
|
16
|
+
end
|
17
|
+
|
18
|
+
puts "Checking the content of #{ARGV}"
|
19
|
+
|
20
|
+
bad_result = false
|
21
|
+
|
22
|
+
ARGV.each do|file|
|
23
|
+
lint = YamlLint.new(file)
|
24
|
+
result = lint.do_lint
|
25
|
+
bad_result = true unless result and bad_result
|
26
|
+
end
|
27
|
+
|
28
|
+
puts 'Done.'
|
29
|
+
exit bad_result ? 1 : 0
|
data/lib/yaml-lint.rb
ADDED
@@ -0,0 +1,82 @@
|
|
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)
|
13
|
+
end
|
14
|
+
|
15
|
+
def warn(message)
|
16
|
+
emit(:message => message, :color => :yellow)
|
17
|
+
end
|
18
|
+
|
19
|
+
def error(message)
|
20
|
+
emit(:message => message, :color => :red)
|
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)
|
37
|
+
@file = file
|
38
|
+
@error = false
|
39
|
+
end
|
40
|
+
|
41
|
+
def do_lint
|
42
|
+
unless File.exists? @file
|
43
|
+
error "File #{@file} does not exist"
|
44
|
+
@error = true
|
45
|
+
return
|
46
|
+
end
|
47
|
+
if File.directory? @file
|
48
|
+
self.parse_directory @file
|
49
|
+
else
|
50
|
+
self.parse_file @file
|
51
|
+
end
|
52
|
+
@error
|
53
|
+
end
|
54
|
+
|
55
|
+
def parse_directory(directory)
|
56
|
+
return nil if ['.', '..'].include? directory
|
57
|
+
Dir.glob("#{directory}/*").each do |fdir|
|
58
|
+
if File.directory? fdir
|
59
|
+
self.parse_directory fdir
|
60
|
+
else
|
61
|
+
self.parse_file fdir
|
62
|
+
end
|
63
|
+
end
|
64
|
+
nil
|
65
|
+
end
|
66
|
+
|
67
|
+
def parse_file(file)
|
68
|
+
unless File.extname(file) == ".yaml"
|
69
|
+
error "The extension of the file #{file} should be .yaml"
|
70
|
+
return
|
71
|
+
end
|
72
|
+
begin
|
73
|
+
YAML.load_file(file)
|
74
|
+
rescue Exception => err
|
75
|
+
error "File : #{file}, error: #{err}"
|
76
|
+
@error = true
|
77
|
+
else
|
78
|
+
info "File : #{file}, Syntax OK"
|
79
|
+
end
|
80
|
+
nil
|
81
|
+
end
|
82
|
+
end
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: yaml-lint
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Julien Fabre
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-05-06 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Check if your YAML files can be loaded.
|
14
|
+
email: ju.pryz@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/yaml-lint.rb
|
20
|
+
- bin/yaml-lint
|
21
|
+
homepage:
|
22
|
+
licenses:
|
23
|
+
- MIT
|
24
|
+
metadata: {}
|
25
|
+
post_install_message:
|
26
|
+
rdoc_options: []
|
27
|
+
require_paths:
|
28
|
+
- lib
|
29
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
requirements: []
|
40
|
+
rubyforge_project:
|
41
|
+
rubygems_version: 2.0.3
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: Really simple YAML lint
|
45
|
+
test_files: []
|