puppet-validator 0.0.1
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.
- checksums.yaml +7 -0
- data/LICENSE +13 -0
- data/README.md +149 -0
- data/bin/puppet-validator +78 -0
- data/config.ru +11 -0
- data/lib/puppet-validator.rb +132 -0
- data/public/info.png +0 -0
- data/public/prism-default.css +227 -0
- data/public/prism.js +961 -0
- data/public/styles.css +99 -0
- data/public/testing.html +38 -0
- data/views/index.erb +24 -0
- data/views/result.erb +37 -0
- metadata +101 -0
data/public/styles.css
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
body {
|
2
|
+
padding: 0 2em;
|
3
|
+
}
|
4
|
+
|
5
|
+
div.line-highlight {
|
6
|
+
/* Cannot use opacity, because that affects tooltip children as well */
|
7
|
+
background-color: rgba(255, 181, 181, 0.25);
|
8
|
+
color: black;
|
9
|
+
font-weight: bold;
|
10
|
+
}
|
11
|
+
div.line-highlight.with-tooltip {
|
12
|
+
background-color: rgba(255, 255, 0, 0.25);
|
13
|
+
pointer-events: auto;
|
14
|
+
}
|
15
|
+
div.line-highlight.with-tooltip .marker {
|
16
|
+
width: 0px;
|
17
|
+
height: 0px;
|
18
|
+
border-top: 0.5em solid #000;
|
19
|
+
border-left: 0.5em solid transparent;
|
20
|
+
position: absolute;
|
21
|
+
top: 0;
|
22
|
+
right: 0;
|
23
|
+
}
|
24
|
+
div.line-highlight.with-tooltip .line-highlight-tooltip {
|
25
|
+
position: absolute;
|
26
|
+
top: -1.75em;
|
27
|
+
right: 0;
|
28
|
+
background-color: #aaccaa;
|
29
|
+
border: 1px solid black;
|
30
|
+
border-radius: 5px;
|
31
|
+
padding: 0 3px;
|
32
|
+
display: none;
|
33
|
+
}
|
34
|
+
div.line-highlight.with-tooltip:hover .line-highlight-tooltip {
|
35
|
+
display: block;
|
36
|
+
}
|
37
|
+
|
38
|
+
div.results {
|
39
|
+
width: 65%;
|
40
|
+
border: 1px solid black;
|
41
|
+
border-radius: 0.25em;
|
42
|
+
padding: 0.5em;
|
43
|
+
margin: 0 auto;
|
44
|
+
}
|
45
|
+
div.results.success {
|
46
|
+
background-color: #61ff6e;
|
47
|
+
}
|
48
|
+
div.results.fail {
|
49
|
+
background-color: #ffb6b6;
|
50
|
+
}
|
51
|
+
|
52
|
+
div.results p {
|
53
|
+
margin: 0;
|
54
|
+
}
|
55
|
+
div.results div.row:first-of-type {
|
56
|
+
margin-top: 0.5em;
|
57
|
+
}
|
58
|
+
|
59
|
+
div.results span.label {
|
60
|
+
width: 7em;
|
61
|
+
font-weight: bold;
|
62
|
+
display: inline-block;
|
63
|
+
text-align: right;
|
64
|
+
padding-right: 0.5em;
|
65
|
+
}
|
66
|
+
|
67
|
+
div.links {
|
68
|
+
margin: 1em auto;
|
69
|
+
padding: 0.5em;
|
70
|
+
border-top: 1px solid black;
|
71
|
+
text-align: center;
|
72
|
+
}
|
73
|
+
div.links a {
|
74
|
+
margin: 0.5em;
|
75
|
+
}
|
76
|
+
|
77
|
+
div.entry {
|
78
|
+
width: 80%;
|
79
|
+
margin: 0 auto;
|
80
|
+
}
|
81
|
+
div.entry textarea {
|
82
|
+
width: 100%;
|
83
|
+
}
|
84
|
+
|
85
|
+
p.info {
|
86
|
+
background: #fefefe url('info.png') no-repeat 5px 5px !important;
|
87
|
+
border: 1px solid #efefef;
|
88
|
+
padding: 0.5em;
|
89
|
+
padding-left: 50px;
|
90
|
+
width: 65%;
|
91
|
+
margin: 0 auto;
|
92
|
+
-moz-border-radius: 0.5em;
|
93
|
+
-webkit-border-radius: 0.5em;
|
94
|
+
-khtml-border-radius: 0.5em;
|
95
|
+
border-radius: 0.5em;
|
96
|
+
}
|
97
|
+
p.info:first-line {
|
98
|
+
font-weight: bold;
|
99
|
+
}
|
data/public/testing.html
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Puppet Validator</title>
|
4
|
+
<link rel="stylesheet" href="styles.css">
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<h1>Testing Puppet Code</h1>
|
8
|
+
<p>
|
9
|
+
This tool will validate the Puppet DSL syntax without compiling a catalog or syncing
|
10
|
+
any resources. Be aware that this <em>only validates syntax</em>. If you have
|
11
|
+
variables that are incorrectly spelled or have a bad value, your code will still
|
12
|
+
be completely valid—and will not do what you want. See the
|
13
|
+
<a href="https://docs.puppetlabs.com/puppet/latest/reference/lang_visual_index.html">Puppet Language Guide</a>
|
14
|
+
if you need help understanding the syntax.
|
15
|
+
</p>
|
16
|
+
<p>
|
17
|
+
Some examples of flaws that will not be identified by this tool include:
|
18
|
+
<ul>
|
19
|
+
<li>Resource declarations with the incorrect name.</li>
|
20
|
+
<li>Including classes that do not exist.</li>
|
21
|
+
<li>Packages declarations with an incorrect package name.</li>
|
22
|
+
<li>File paths which do not exist on the agent.</li>
|
23
|
+
<li><code>exec</code> resources which fail to run properly.</li>
|
24
|
+
</ul>
|
25
|
+
</p>
|
26
|
+
<p>
|
27
|
+
Other tools do exist which can help make sure your code actually works as intended.
|
28
|
+
Some examples are:
|
29
|
+
<ul>
|
30
|
+
<li><a href="https://github.com/rodjek/puppet-lint">Puppet Lint</a></li>
|
31
|
+
<li><a href="http://rspec-puppet.com/tutorial/">rspec-puppet</a></li>
|
32
|
+
<li><a href="https://github.com/puppetlabs/puppetlabs_spec_helper">Puppetlabs Spec Helper</a></li>
|
33
|
+
<li><a href="https://github.com/puppetlabs/beaker">Beaker</a></li>
|
34
|
+
</ul>
|
35
|
+
</p>
|
36
|
+
<div class="links"><a href="javascript:history.back();">Try Again</a> • <a href="/">Validate More Code</a></div>
|
37
|
+
</body>
|
38
|
+
</html>
|
data/views/index.erb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Puppet Validator</title>
|
4
|
+
<link rel="stylesheet" href="styles.css">
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<h1>Puppet Code Validator</h1>
|
8
|
+
<p>Paste Puppet code into the following textbox and check it for validity.</p>
|
9
|
+
<form id="code" action="/validate" method="post">
|
10
|
+
<div class="entry">
|
11
|
+
<textarea name="code" id="textarea" cols="65" rows="25"></textarea>
|
12
|
+
<input type="submit" value="Validate">
|
13
|
+
<input type="checkbox" name="lint">Include <code>puppet-lint</code> style checks.
|
14
|
+
</div>
|
15
|
+
</form>
|
16
|
+
<p class="info">
|
17
|
+
Be aware that this <em>only validates syntax</em>. It will not compile a
|
18
|
+
catalog or sync any resources. This means that, for example, it cannot
|
19
|
+
identify whether you have used the proper resource types, whether package
|
20
|
+
names are correct, or file paths exist. See <a href="/testing.html">more
|
21
|
+
information on testing and validating Puppet code.</a>
|
22
|
+
</p>
|
23
|
+
</body>
|
24
|
+
</html>
|
data/views/result.erb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Puppet Validator</title>
|
4
|
+
<link rel="stylesheet" href="prism-default.css">
|
5
|
+
<link rel="stylesheet" href="styles.css">
|
6
|
+
<script src="prism.js"></script>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<h1>Validation Results</h1>
|
10
|
+
<div class="results <%= @status %>">
|
11
|
+
<p><%= @message %></p>
|
12
|
+
<% if @line %>
|
13
|
+
<div class="row">
|
14
|
+
<span class="label">Line Number:</span><span class="message"><%= @line %></span>
|
15
|
+
</div>
|
16
|
+
<% end %>
|
17
|
+
<% if @column %>
|
18
|
+
<div class="row">
|
19
|
+
<span class="label">Column:</span><span class="message"><%= @column %></span>
|
20
|
+
</div>
|
21
|
+
<% end %>
|
22
|
+
<% if @lint_warnings %>
|
23
|
+
<hr />
|
24
|
+
<p>See inline <code>puppet-lint</code> warnings.</p>
|
25
|
+
<% end %>
|
26
|
+
</div>
|
27
|
+
<pre data-line='<%= @highlights %>' class="line-numbers language-puppet"><code class="line-numbers language-puppet"><%= @code %></code></pre>
|
28
|
+
<div class="links"><a href="javascript:history.back();">Try Again</a> • <a href="/">Validate More Code</a></div>
|
29
|
+
<p class="info">
|
30
|
+
Be aware that this has <em>only validated syntax</em>. It will not compile a
|
31
|
+
catalog or sync any resources. This means that, for example, it cannot
|
32
|
+
identify whether you have used the proper resource types, whether package
|
33
|
+
names are correct, or file paths exist. See <a href="/testing.html">more
|
34
|
+
information on testing and validating Puppet code.</a>
|
35
|
+
</p>
|
36
|
+
</body>
|
37
|
+
</html>
|
metadata
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: puppet-validator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ben Ford
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-02-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: sinatra
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: puppet
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: puppet-lint
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.1'
|
55
|
+
description: |2
|
56
|
+
Puppet Validator is a simple web service that accepts arbitrary code submissions and
|
57
|
+
validates it the way `puppet parser validate` would. It can optionally also
|
58
|
+
run `puppet-lint` checks on the code and display both results together.
|
59
|
+
email: binford2k@gmail.com
|
60
|
+
executables:
|
61
|
+
- puppet-validator
|
62
|
+
extensions: []
|
63
|
+
extra_rdoc_files: []
|
64
|
+
files:
|
65
|
+
- LICENSE
|
66
|
+
- README.md
|
67
|
+
- bin/puppet-validator
|
68
|
+
- config.ru
|
69
|
+
- lib/puppet-validator.rb
|
70
|
+
- public/info.png
|
71
|
+
- public/prism-default.css
|
72
|
+
- public/prism.js
|
73
|
+
- public/styles.css
|
74
|
+
- public/testing.html
|
75
|
+
- views/index.erb
|
76
|
+
- views/result.erb
|
77
|
+
homepage: https://github.com/puppetlabs/puppet-validator/
|
78
|
+
licenses: []
|
79
|
+
metadata: {}
|
80
|
+
post_install_message:
|
81
|
+
rdoc_options: []
|
82
|
+
require_paths:
|
83
|
+
- lib
|
84
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
requirements: []
|
95
|
+
rubyforge_project:
|
96
|
+
rubygems_version: 2.4.6
|
97
|
+
signing_key:
|
98
|
+
specification_version: 4
|
99
|
+
summary: Puppet code validator as a service
|
100
|
+
test_files: []
|
101
|
+
has_rdoc: false
|