/
Rakefile
49 lines (38 loc) · 986 Bytes
/
Rakefile
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
require 'bundler/gem_tasks'
require 'junoser/development'
require 'nokogiri'
require 'pathname'
require 'rake/testtask'
xsd_path = File.join(__dir__, 'tmp/junos-system-17.2.xsd')
rule_path = File.join(__dir__, 'tmp/rule.rb')
parser_path = File.join(__dir__, 'lib/junoser/parser.rb')
def open_files(input, output, &block)
i = open(input)
o = open(output, 'w')
yield i, o
i.close
o.close
end
namespace :build do
desc 'Build an intermediate config hierarchy'
task(:config) do
open_files(xsd_path, rule_path) do |input, output|
Nokogiri::XML(input).root.remove_unused.xpath('/xsd:schema/*').each do |e|
output.puts e.to_config
end
end
end
desc 'Build the parser'
task(:rule) do
open_files(rule_path, parser_path) do |input, output|
output.puts Junoser::Ruler.new(input).to_rule
end
end
end
Rake::TestTask.new do |t|
t.libs << 'test'
t.verbose = true
t.warning = false
end
desc 'Run tests'
task default: :test