aboutsummaryrefslogtreecommitdiffstats
path: root/bin/process
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)