|
NAMEConfig::Model::Instance - Instance of configuration treeVERSIONversion 2.149SYNOPSISuse Config::Model; use File::Path ; # setup a dummy popcon conf file my $wr_dir = '/tmp/etc/'; my $conf_file = "$wr_dir/popularity-contest.conf" ; unless (-d $wr_dir) { mkpath($wr_dir, { mode => 0755 }) || die "can't mkpath $wr_dir: $!"; } open(my $conf,"> $conf_file" ) || die "can't open $conf_file: $!"; $conf->print( qq!MY_HOSTID="aaaaaaaaaaaaaaaaaaaa"\n!, qq!PARTICIPATE="yes"\n!, qq!USEHTTP="yes" # always http\n!, qq!DAY="6"\n!); $conf->close ; my $model = Config::Model->new; # PopCon model is provided. Create a new Config::Model::Instance object my $inst = $model->instance (root_class_name => 'PopCon', root_dir => '/tmp', ); my $root = $inst -> config_root ; print $root->describe; DESCRIPTIONThis module provides an object that holds a configuration tree.CONSTRUCTORAn instance object is created by calling instance method on an existing model. This model can be specified by its application name:my $inst = $model->instance ( # run 'cme list' to get list of applications application => 'foo', # optional instance_name => 'test1' ); my $inst = $model->instance ( root_class_name => 'SomeRootClass', instance_name => 'test1' ); The directory (or directories) holding configuration files is specified within the configuration model. For test purpose you can change the "root" directory with "root_dir" parameter. Constructor parameters are:
Note that the root directory specified within the configuration model is overridden by "root_dir" parameter. If you need to load configuration data that are not correct, you can use "force_load => 1". Then, wrong data are discarded (equivalent to "check => 'no'" ). METHODSManage configuration datamodifyCalls "load" and then "save".Takes the same parameter as "load" plus:
loadLoad configuration tree with configuration data. See "load" in Config::Model::Loader for parameters. Returns <$self>.saveSave the content of the configuration tree to configuration files. (See "write_back" for more details)Use "force => 1" option to force saving configuration data. config_rootReturns the root object of the configuration tree.apply_fixesScan the tree and apply fixes that are attached to warning specifications. See "warn_if_match" or "warn_unless_match" in "" in Config::Model::Value.deep_checkScan the tree and deep check on all elements that support this. Currently only hash or list element have this feature.needs_saveReturns 1 (or more) if the instance contains data that needs to be saved. I.e some change were done in the tree that needs to be saved.has_changesReturns true if the instance contains unsasved changes.list_changesIn list context, returns a array ref of strings describing the changes. In scalar context, returns a big string. Useful to print.say_changesPrint all changes on STDOUT and return $self.clear_changesClear list of changes. Note that changes pending in the configuration tree is not affected. This clears only the list shown to user. Use only for tests.has_warningReturns the number of warning found in the elements of this configuration instance.updateParameters: "( quiet => (0|1), %args )"Try to run update command on all nodes of the configuration tree. Node without "update" method are ignored. "update" prints a message otherwise (unless "quiet" is true). grabUse the steps parameter to retrieve and returns an object from the configuration tree. Forwarded to "grab" in Config::Model::Role::Grabgrab_valueUse the steps parameter to retrieve and returns the value of a leaf object from the configuration tree. Forwarded to "grab_value" in Config::Model::Role::GrabsearcherReturns an object dedicated to search an element in the configuration model.This method returns a Config::Model::Searcher object. See Config::Model::Searcher for details on how to handle a search. iteratorThis method returns a Config::Model::Iterator object. See Config::Model::Iterator for details.Arguments are explained in Config::Model::Iterator constructor arguments. applicationReturns the application name of the instance. (E.g "popcon", "dpkg" ...)wizard_helperDeprecated. Call "iterator" instead.Internal methodsnameReturns the instance name.read_checkReturns which kind of check is performed while reading configuration files. (see "check" parameter in "CONSTRUCTOR" section)show_messageParameters: "( string )"Display the message on STDOUT unless a custom function was passed to "on_message_cb" parameter. reset_configDestroy current configuration tree (with data) and returns a new tree with data (and annotations) loaded from disk.config_modelReturns the model (Config::Model object) of the configuration tree.annotation_saverReturns the object loading and saving annotations. See Config::Model::Annotation for details.preset_startAll values stored in preset mode are shown to the user as default values. This feature is useful to enter configuration data entered by an automatic process (like hardware scan)preset_stopStop preset modepresetGet preset modepreset_clearClear all preset values stored.layered_startAll values stored in layered mode are shown to the user as default values. This feature is useful to enter configuration data entered by an automatic process (like hardware scan)layered_stopStop layered modelayeredGet layered modelayered_clearClear all layered values stored.get_data_modeReturns 'normal' or 'preset' or 'layered'. Does not take into account initial_load.initial_load_startStart initial_load mode. This mode tracks the first modifications of the tree done with data read from the configuration file.Instance is built with initial_load as 1. Read backend clears this value once the first read is done. Other modifications, when initial_load is zero, are assumed to be user modifications. initial_load_stopStop initial_load mode. Instance is built with initial_load as 1. Read backend clears this value once the first read is done.initial_loadGet initial_load modedataThis method provides a way to store some arbitrary data in the instance object.E.g: $instance->data(foo => 'bar'); Later: my $foo = $instance->data('foo'); # $foo contains 'bar' Read and write backend featuresUsually, a program based on config model must first create the configuration model, then load all configuration data.This feature enables you to declare with the model a way to load configuration data (and to write it back). See Config::Model::BackendMgr for details. backendGet the preferred backend method for this instance (as passed to the constructor).backend_argGet cme command line argument that may be used by the backend to get the configuration file. These method is typically used in the read and write method of a backend to know where is the configuration file to edit.root_dirReturns a Path::Tiny object for the root directory where configuration data is read from or written to.root_pathSame as "root_dir"register_write_backParameters: "( node_location )"Register a node path that is called back with "write_back" method. notify_changeNotify that some data has changed in the tree. See "notify_change" in Config::Model::AnyThing for more details.write_backIn summary, save the content of the configuration tree to configuration files.In more details, "write_back" trie to run all subroutines registered with "register_write_back" to write the configuration information. (See Config::Model::BackendMgr for details). You can specify here another config directory to write configuration data back with "config_dir" parameter. This overrides the model specifications. "write_back" croaks if no write call-back are known. Use "force => 1" option to force saving configuration data. This is useful to write back a file even no change are done at semantic level, i.e. to reformat a file or remove unnecessary data. AUTHORDominique Dumont, (ddumont at cpan dot org)SEE ALSOConfig::Model, Config::Model::Node, Config::Model::Loader, Config::Model::Searcher, Config::Model::Value,AUTHORDominique DumontCOPYRIGHT AND LICENSEThis software is Copyright (c) 2005-2022 by Dominique Dumont.This is free software, licensed under: The GNU Lesser General Public License, Version 2.1, February 1999
Visit the GSP FreeBSD Man Page Interface. |