NAME Config::Builder - A configuration builder SYNOPSIS use Config::Builder; my $cbuilder = Config::Builder->new(); $cbuilder->generate(); DESCRIPTION This module is a configuration builder. It takes in gramar and spec files to create a single point of configuration for other applications. It primarily uses YAML. GETTING STARTED To get started, follow these steps: ./bin/termbuilder.pl - build the term list ./bin/targetbuilder.pl - build the target files ./bin/buildconfig.pl - generate a config based on data/meta.yaml META This module does have a set of defaults but doesn't really know what it is doing without a meta file. In this case it uses meta.yaml to point it in the right direction. The meta.yaml file contains the following. default_target This value defines the default target to build if none is specified. flags This value is an array of flags that are applied to the config builder. output This value is a hash containing output specs. The key/values are: file - The file to write to type - The output type. Can be either 'template' or 'yaml'. spec - The template file to use. targets An array of *.target.yaml files that can be used. terms This value points to the terms file to use. version This is not currently being used. This is an example meta.yaml file. --- default_target: dev flags: - strict - warnings output: file: Config.pm spec: perlmodule type: template targets: - dev.target.yaml - common.target.yaml terms: terms.yaml version: 1.0 TERMS Terms are allowed variables. During the postproccessing phase it cycles through the list of known and current variables to make sure that all references match. The strict and warnings flags define if the unkown config directives will cause warnings or be pruned. This is an example term.yaml file. --- terms: AboutStyles: type: HASH AcceptRichTextMail: default: 0 type: SCALAR Note that there are 4 distinct types: SCALAR, ARRAY, HASH and HASHARRAY. Only scalars can have default values. TARGETS Targets are sections of config data that are parses and processed. They are identified by name and contain actual variables and variable values. Targets can also contain rules. This is an example target.yaml file. --- MemcachedServers: - key: GeneralPool value: memcache1.example.com:11211 - key: GeneralPool value: memcache2.example.com:11211 NoTempFiles: 1 WebServers: - 192.168.30.1 - 192.168.30.1 rules: - type: merge from: common.target.yaml RULES Rules define the complex behavior of targets. There are 3 types of rules: merge, init and inherit. The init rule simply tells the processor that the merge hash needs to be initilized. The merge rule tells the processor that it needs to merge target x and y before it can absorb the values. The inherit rule is for user.yaml files and tells the processor that its rules override everything else. OVERIDING TARGETS In order to overide a target's config you must touch a user.yaml file. The user.yaml file MUST contain the following rule: rules: - type: inherit For all intensive purposes a user.yaml file is exactly like a target.yaml file in all other respects. SUBROUTINES / METHODS files new parse parse_meta generate add_file find_file AUTHOR Nick Gerakines, "" BUGS Please report any bugs or feature requests to "bug-Config-Builder at rt.cpan.org", or through the web interface at . I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. SUPPORT You can find documentation for this module with the perldoc command. perldoc Config::Builder You can also look for information at: * AnnoCPAN: Annotated CPAN documentation * CPAN Ratings * RT: CPAN's request tracker * Search CPAN COPYRIGHT & LICENSE Copyright 2006 Nick Gerakines, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.