Config-BuildHelper version 0.01
===============================
This module provides a tool to help you generate configuration files for a
large number of hosts where the hosts share common configuration elements but
edge cases are still handled gracefully.
EXAMPLE
use strict;
use warnings;
use Config::BuildHelper;
my $yaml = <<EOY;
---
name: Root
data:
config: [[SET, CHECK_BRAKES, CHECK_SPARK_PLUGS]]
children:
- name: Car
match:
model: "^(\\d{3}[a-z]?|[A-Z]\\d)\$"
data:
config: [[ADD, ROTATE_TIRES]]
children:
- name: Diesel
match:
model: "d\$"
data:
config: [[REMOVE, CHECK_SPARK_PLUGS], [ADD, CHECK_GLOW_PLUGS]]
- name: Motorcycle
match:
model: "^[A-Z]\\d{3,4}[^\\d]"
data:
config: [[ADD, CHECK_REAR_TIRE_ALIGNMENT]]
EOY
my @customer_vehicles = (
{ customer_id => 1, model => '325i' },
{ customer_id => 2, model => '535d' },
{ customer_id => 3, model => 'M3' },
{ customer_id => 4, model => 'R1200RT' },
);
my $helper = Config::BuildHelper->new(yaml => $yaml);
for (@customer_vehicles) {
my $result = $helper->process($_);
print "$_->{customer_id}: ";
if (! defined($result->class)) {
print "could not classify data\n";
next;
}
print "$_->{model} ", join(' ', $result->config_list), "\n";
}
__END__
Which will output:
1: 325i CHECK_SPARK_PLUGS ROTATE_TIRES CHECK_BRAKES
2: 535d ROTATE_TIRES CHECK_BRAKES CHECK_GLOW_PLUGS
3: M3 CHECK_SPARK_PLUGS ROTATE_TIRES CHECK_BRAKES
4: R1200RT CHECK_SPARK_PLUGS CHECK_BRAKES CHECK_REAR_TIRE_ALIGNMENT
INSTALLATION
To install this module type the following:
perl Makefile.PL
make
make test
make install
DEPENDENCIES
This module requires these other modules and libraries:
Data::Classifier
COPYRIGHT AND LICENCE
Copyright (C) 2007 by Tyler Riddle <
[email protected]>.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.5 or,
at your option, any later version of Perl 5 you may have available.