blob: e95dbb9eea20dc268cf3997351e96b5f60ee6535 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#! /usr/bin/env ruby
require 'erb'
require 'optparse'
# Hash to store our -D variables
template_vars = {}
# Parse command line options
OptionParser.new do |opts|
opts.banner = "Usage: #{$0} [options] <input> <output>"
opts.on('-DVAR=VALUE', 'Define template variable') do |definition|
var, value = definition.split('=', 2)
if var && value
template_vars[var] = value
else
puts "Invalid -D format: #{definition}"
exit 1
end
end
opts.on('-h', '--help', 'Show this help') do
puts opts
exit
end
end.parse!
# Check we have the right number of remaining args
if ARGV.length != 2
puts "Usage: #{$0} [options] <input> <output>"
puts "Use -h for help"
exit 1
end
input_file = ARGV[0]
output_file = ARGV[1]
# Read the template
template = File.read(input_file)
# Create a binding with our variables
binding_context = binding
template_vars.each do |var, value|
binding_context.local_variable_set(var.to_sym, value)
end
# Process with ERB
erb = ERB.new(template)
result = erb.result(binding_context)
# Write output
File.write(output_file, result)
|