frender 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/Gemfile +4 -0
- data/Gemfile.lock +13 -0
- data/bin/frender +9 -0
- data/lib/frender/cli.rb +23 -0
- data/lib/frender/renderer.rb +62 -0
- data/lib/frender/template_wrapper.rb +26 -0
- data/lib/frender/version.rb +3 -0
- metadata +79 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 050926cd8dcbe62d2aecffdf9bd6173b130773c2
|
4
|
+
data.tar.gz: b1a7adf85cc81038008d8e8594b19380df24b195
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 788c2f2496e008228b9780081047a93abc54593ea1ac1f734a12f947e2037d85f329d5feac28aa8fc90de0fae1dffe050434fcb33c93fe83aab2c510152feac6
|
7
|
+
data.tar.gz: 1e6b0d5eab49cfd0233dfb935a189d5a389e5ff831031ef347f803a94ede1f80713eab3bcbca38a73e244c96e9c26c82f76c08858a191796ebd4e807f8417c79
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
data/bin/frender
ADDED
data/lib/frender/cli.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
module Frender
|
2
|
+
class CLI
|
3
|
+
include Methadone::Main
|
4
|
+
include Methadone::CLILogging
|
5
|
+
|
6
|
+
version Frender::VERSION
|
7
|
+
|
8
|
+
description "Renders config files from input data in YAML format"
|
9
|
+
|
10
|
+
arg :spec, "Specification of files that should be built"
|
11
|
+
|
12
|
+
on("--stat", "Show git stats after rendering files")
|
13
|
+
on("--scope YAML", "Override the scope defined in the specification")
|
14
|
+
|
15
|
+
use_log_level_option
|
16
|
+
|
17
|
+
main do |spec|
|
18
|
+
Renderer.new(spec, options)
|
19
|
+
end
|
20
|
+
|
21
|
+
go!
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Frender
|
2
|
+
class Renderer
|
3
|
+
include Methadone::CLILogging
|
4
|
+
|
5
|
+
def initialize(spec_file, options={})
|
6
|
+
@spec_file = spec_file
|
7
|
+
@options = options
|
8
|
+
|
9
|
+
load_spec
|
10
|
+
load_scope
|
11
|
+
render!
|
12
|
+
end
|
13
|
+
|
14
|
+
def scope
|
15
|
+
Marshal.load(Marshal.dump(@scope))
|
16
|
+
end
|
17
|
+
|
18
|
+
def render!
|
19
|
+
@spec[:files].each do |file, options|
|
20
|
+
TemplateWrapper::render(options, scope, file)
|
21
|
+
end
|
22
|
+
|
23
|
+
if @options[:stat]
|
24
|
+
puts
|
25
|
+
c = "git diff --color --stat %s" % @spec[:files].map{|f,_| f}.join(" ")
|
26
|
+
system(c)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def load_spec
|
31
|
+
raise("Cannot find spec file %s" % @spec_file) unless File.exist?(@spec_file)
|
32
|
+
raise("Cannot read spec file %s" % @spec_file) unless File.readable?(@spec_file)
|
33
|
+
|
34
|
+
info "Reading specification file %s" % @spec_file
|
35
|
+
|
36
|
+
@spec = YAML.load(File.read(@spec_file))
|
37
|
+
|
38
|
+
if !@spec[:frender].is_a?(Hash) || @spec[:frender].empty?
|
39
|
+
raise "No :frender: found in the spec loaded from %s" % @spec_file
|
40
|
+
end
|
41
|
+
|
42
|
+
@spec = @spec[:frender]
|
43
|
+
|
44
|
+
if !@spec[:files].is_a?(Hash)
|
45
|
+
raise "No :files: found in the spec loaded from %s" % @spec_file
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def load_scope
|
50
|
+
if @scope_file = @options[:scope]
|
51
|
+
debug "Using scope file %s from options hash" % @options[:scope]
|
52
|
+
else
|
53
|
+
debug "Using scope file %s from specification" % @spec[:yaml_scope]
|
54
|
+
@scope_file = @spec[:yaml_scope]
|
55
|
+
end
|
56
|
+
|
57
|
+
info "Reading scope file %s" % @scope_file
|
58
|
+
|
59
|
+
@scope = YAML.load(File.read(@scope_file))
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Frender
|
2
|
+
class TemplateWrapper
|
3
|
+
include Methadone::CLILogging
|
4
|
+
|
5
|
+
def self.render(options, scope, outfile=nil)
|
6
|
+
if !File.exist?(options[:template]) && !File.readable?(options[:template])
|
7
|
+
raise("Cannot render %s, template %s does not exist or is not readable" % [outfile, options[:template]])
|
8
|
+
end
|
9
|
+
|
10
|
+
content = TemplateWrapper.new.render_partial(options[:template], scope)
|
11
|
+
|
12
|
+
if outfile
|
13
|
+
info "Rendering file %s using template %s" % [outfile, options[:template]]
|
14
|
+
File.open(outfile, "w") {|f| f.puts content}
|
15
|
+
else
|
16
|
+
info "Rendering using template %s" % options[:template]
|
17
|
+
end
|
18
|
+
|
19
|
+
content
|
20
|
+
end
|
21
|
+
|
22
|
+
def render_partial(template, scope)
|
23
|
+
Tilt.new(template, :trim => "-").render(TemplateWrapper.new, scope)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: frender
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- R.I.Pienaar
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-02-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: tilt
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: methadone
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.8'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.8'
|
41
|
+
description: 'description: Renders config files from input data in YAML format using
|
42
|
+
a variety of template languages'
|
43
|
+
email: rip@devco.net
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- lib/frender/cli.rb
|
49
|
+
- lib/frender/template_wrapper.rb
|
50
|
+
- lib/frender/renderer.rb
|
51
|
+
- lib/frender/version.rb
|
52
|
+
- bin/frender
|
53
|
+
- Gemfile
|
54
|
+
- Gemfile.lock
|
55
|
+
homepage: http://devco.net/
|
56
|
+
licenses:
|
57
|
+
- Apache-2
|
58
|
+
metadata: {}
|
59
|
+
post_install_message:
|
60
|
+
rdoc_options: []
|
61
|
+
require_paths:
|
62
|
+
- lib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - '>='
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
requirements: []
|
74
|
+
rubyforge_project:
|
75
|
+
rubygems_version: 2.0.14
|
76
|
+
signing_key:
|
77
|
+
specification_version: 4
|
78
|
+
summary: frender
|
79
|
+
test_files: []
|