Config-Model
view release on metacpan or search on metacpan
* AnyId: avoid deref of undef value
* Loader: fix parsing of list assignment with quotes
* Value: do not store warnings from computed value
* Node: warn only once about deprecated elements
* CheckList: accept non_upstream_default mode
Doc improvements:
* AnyId: clarify doc and error message
* Add doc for container method
* Value: clarify load_data doc
* Value: fix typos in doc
API changes:
* Value: provide has_warnings along has_warning
* DumpAsData, Dumper:
* deprecate full_mode parameter
* full dump is now mode => user
2.136 2019-07-29
Bug fix:
* also tweak ~ dir for tests in Path::Tiny coercion
(fixes Config::Model::Systemd tests that was broken with
Config::Model 2.134)
Doc update:
* Mention force option in Instance doc
2.135 2019-06-05
Bug fix:
* Fix undef start_node error occuring with 'cme run' command
(this regression from previous version broke app-cme tests)
* Instance: clear changes after reset
Doc update:
* remove mention of long gone privilege parameter
2.134 2019-05-05
Bug fix:
* Fix Instance->reset_config method
* improve error handling of get_model_doc
Minor behavior changes:
* dump_tree: add quote around value or if that contain '~'
Deprecation:
* Instance: remove deprecated read_root_dir method
Misc:
* update copyright year
* Tests require Config::Model::Tester 4.002
2.133 2019-01-13
Read/write backend improvements:
* Backend::Any: add auto_delete and auto_create
* IniFile: delete empty file when auto_delete is set
and config file contains no data
* warn when restoring backup file
2.132 2018-12-22
Bug fix:
* Value: really use old_value to track changes
* restore "return undef" in Value.pm to avoid breaking apply_fix
Add long forgotten credit (sorry):
* add Ylya Arosov to credit
2.131 2018-12-16
With this release, this distribution no longer provides YAML
backend. The YAML backend is now delivered in its own
distribution. Look for Config::Model::Backend::Yaml on CPAN.
Other changes:
* Value: use warn_if warn_unless label in warning message shown to user.
* BackendMgr: throw correctly "unknown backend" exception
* Exception: trap missing object parameter
Doc update
* remove mention of old config-model-users mailing list (dead)
* BackendMgr: mention that Yaml backend is now external
2.130 2018-12-07
Dependency changes:
* require boolean module (really)
2.129 2018-12-05
Usability improvements:
* Value" improve warning message about multi line value
Perl backend improvement:
* Convert cme boolean values (i.e. value of value_type boolean) to
Perl boolean values
Dependency changes:
* build require boolean module
2.128 2018-11-21
Usability improvements:
* CheckList: die or warn (with cme -force) when storing unknown item
in check list. Bad values used to be silently dropped.
Test fixes:
* add \n at end of yaml test files (gh #22)
Internal changes:
* improve code quality thanks to the feedbacks provided by kritika.io
Doc change:
* Improve navigation in doc: move parameters from header line to paragraph.
* Instance: add doc for backend_arg
* Instance: improve doc of data method
2.127 2018-09-30
2.123 2018-05-01
On-going improvements of R/W backends:
* io_handle backend parameter is deprecated
* use file_path in all backends instead of io_handle
Test improvements:
* build dep on Config::Model::Tester 3.006
* document prove command in t/README.pod
* tests run without showing any warnings
* all tests accept --log --error --trace parameters
* all test models are updated to remove all
deprecated declarations
Bug fix:
* fix parameter sanitisation in Instance
* Value: remove self assignment (tx kritika.io)
* update WarpedNode synopsis
2.122 2018-04-17
Bug fix:
* Warper: fix crash when a warper (aka warp master)
is a computed value
2.121 2018-04-15
* BackendMgr: fix handling of file argument
* Instance: fix compat with Perl < 5.20
Log improvements:
* use User class to log warning for User
* Model: add doc for initialize_log4perl
* Model: moved log4perl default conf in a separate file
(lib/Config/Model/log4perl.conf)
Test improvements:
* add README for the tests
* some tests can be run with --log, --trace and --error
options. See t/README.pod for details
2.120 2018-04-08
Bug fix:
* fix config file location declared with absolute
path (i.e. all system application like ssh, systemd)
2.119 2018-04-02
Main change:
* use logger to warn about issues. By default, logged warnings
are shown on STDOUT. These warnings can be suppressed
using ~/.log4config-model file.
API change:
* Instance: root_dir parameter can be a Path::Tiny object
or a string
Bug fixes:
* BackendMgr: fix broken file backup
* Backend: create dir before creating file
* Yaml backend: avoid redefined sub warning
2.118 2018-03-26
On-going backend deprecation:
* BackendMgr: deprecate using STDIN to load config file. Which
means using '-' with cme '-file' option is deprecated.
Backend:
* Improve global comment extraction
Other changes:
* remove unused modules from BackendMgr
* Exception: improve Model error message
2.117 2018-02-03
Bug fixes:
* notify about addition of hash key only when needed
* fix error message of "missing file" exception
2.116 2017-12-15
Fix broken cme:
* Instance: fix regression about root_dir param
2.115 2017-12-14
On-going backend deprecation (which might be breaking):
* Backend: deprecate using instance name as config file name
* All backends: suffix method is deprecated
Backend:
* ShellVar backend: don't reorder when writing back (experimental)
* trap when backend class has no implementation
New features:
* Loader: provide "english" operator foreach_match, rm rm_value,
rm_match, substitute. These are equivalent to :-~ :- :-= :-~ :=~
operators (cme gh#2)
Bug fixes:
* Node gist: no need to show that value is undef
* WarpedNode: forward fetch_gist instead of gist
* Instance: add doc for root_path parameter
2.114 2017-11-11
On-going backend deprecation (which might be breaking):
* support for multiple backends is now removed. Attempting to
configure multiple backend leads to an error message with
explanations.
* when possible (i.e. when only one backend is specified),
translate read_config and write_config in new rw_config. This
should limit breakage to the minimum as multiple backends are
seldom (if ever) used.
New features:
* AnyId: add fetch method
* value.t: avoid smoke test failures
* Avoid new perl 5.20 warning (Debian #758320)
* Value: improved notify change message (computed vs preset vs default)
* fix pod doc in cme (RT 97605, Debian #756433)
* depends directly on YAML, not YAML::Any which will be deprecated
2.059 2014-06-29
New features:
* cme:
+ added shell command as a shortcut to 'cme edit -ui shell'.
E.g 'cme shell ssh' to edit ssh_config through a shell like UI
+ add :@ and :.sort sub command for ordered hash.
E.g.: "cme modify dpkg-control ~~ 'binary:~/.*/ Depends:.sort' -save"
or "cme modify dpkg-copyright ~~ 'Files:.sort' -save "
* Config::Model::Value: added warn_if parameter
Bug fixes:
* cme shell mode:
* fix or add completion for several commands
* added shell style pattern match to ll and ls command (e.g 'ls foo*')
* remove version req from use YAML::Any 0.303 (resolve issues with
Debian FTBS)
* Value: fix crash when default value raises a warning and code fix
returns undef.
2.058 2014-06-19
Bug fix release
* cme: modify cryptic user message about "Fixing stuff"
* Value: tweak migrate_value to always return something, even undef.
This fixes 'cme check dpkg-copyright' crash (thanks gregoa)
* Loader: fix pod doc about list operators
* AnyThing: avoid undef warning that breaks test on freebsd perl 5.10.1
2.057 2014-06-12
New features:
* Config::Model: initialise log4perl during construction
* Value: added file and dir value type. A warning is issued when file
or dir is not found.
Other bug fixes:
* Shortens long index to limit the length of warning and error messages
* Value: fix check done during apply_fixes...
* ObjTreeScanner: tolerate deprecated experience parameter.
2.056 2014-05-18
This release deprecates experience associated with configuration element.
experience specification in models is now ignored.
Other Changes:
* added bash_completion snippet associated to a model. This will be useful
for dpkg-patch model
* C::M::Lister: skip backup files when listing available applications
* replace File::Slurp with Path::Tiny in yaml backend test and gen-class-pod
(RT #95692). (which changes the dependencies)
* replaced Path::Class with Path::Tiny dependency
2.055 2014-05-02
This release removes all code related to asynchronous stores. This code was
buggy. Making this work correctly would require re-writing most of
Config::Model.
* Config::Model::Value:
* added deprecation warning about callback parameter
* C::M::Value: removed async code
* perltidy run on all files
* removed dependency on namepace::autoclean
* Removed AnyEvent dependency
2.054 2014-04-01
Bug fix release:
* Loader Dumper: fix quote handling (Closes Debian 743097)
* Loader: return 'ok' after dispatching an action (avoid undef warning
during tests)
* cme: -save options force a save even if no semantic change was done
* ListId: sort may trigger notify_change is elements are actually
moved around, so 'cme modify stuff list:.sort' will save the file
as expected.
2.053 2014-03-25
Bug fix release:
* Loader: fix broken list leaf assignment (like 'list:4=foo')
2.052 2014-03-23
This release provides new functionalities to 'cme modify stuff'
and to the shell like interface ('cme edit -ui shell stuff). See
Config::Model::Loader doc for details:
+ added remove by value on list and hash ( :-= and :-~ )
(Closes Debian #741453)
+ added lots of list and hash operator usable on 'cme modify stuff'.
E.g. :.insort :.insert_before :.insert_at :.unshift :.push :.sort
+ handle list/hash value substitution ( e.g. list:=~s/foo/bar/ )
* warn when trying to remove a list element with a non numeric index
* rationalize list and hash commands: list assignment is now
list:=a,b,c instead of list=a,b,c
Other changes:
* Dumper: use new syntax when dumping a list of value (i.e. list:=a,b,c)
* Instance: don't print change if old and new value are undef
2.051 2014-03-06
* cme: fix command like "cme modify foo ~~ <load_instructions>"
* ValueComputer: formula with eval no longer mess with $& and ${^MATCH}
variables used in regexp
2.050 2014-02-27
2.049 2014-02-26
Bug fix and minor new feature release:
* C::M::AnyThing: added has_warning fallback method (always return 0)
(RT 93329)
* C::M::Anything: added clear_annotation method
2.048 2014-02-23
The main changes of this release are the new features of cme
command:
* add possibility to override config file (for appli with
allow_config_file_override) (part of Debian #739387) if config
file override is '-', open STDIN to read and STDOUT to write.
This way, cme can be used as a filter.
* added -strict option so cme exits 1 when warnings are found
(Closes Debian #736972)
* added -save option to force save. Useful when just reformatting
is desired
* modify command can apply Perl substitution (s/foo/bar) to
configuration values
Other changes:
* C::M::Loader:
* changed hash selection =~ sub-command to :~
+ added =~ subcommand to apply Perl substitution to values
* Config::Model: load EV at compile time (Debian #738975)
* C::M::Value: limit the number of re-try when applying fix to
avoid deep recursion errors
* C::M::Node: force a save when reading a deprecated parameter (RT 92639)
* C::M::Instance: use msg parameter when listing changes
* C::M::AnyThing: added doc for notify_change
2.047 2014-01-25
* Value: store a good value cancels the error stored in Instance
* Term UI:
* list unsaved changes and propose to save on exit or quit
* fixed "save" command
* added 'changes' command to list unsaved changes
* allow also delete command on leaf element
* added reset command to set a leaf element to undef
* allow spaces around '=' and ':'
* tweak cme-gen-class-pod so it can be run without cme (handy for tests)
* Model generate_doc: write file if new doc is different from old
(don't try to be smart with timestamps)
2.046 2013-12-15
* cme:
+ added -create option to force creation of missing configuration
file
* improved message about applied changes and don't show '0' as <undef>
* added examples in pod doc
* BackendMgr:
+ add note about cme in header of saved file (if comments
are supported in the configuration file format)
* Improved error message when no config file is found
* skip backup copy if no original file is found
* Node: avoid unknown element failure when check is 'no'
* ValueComputer:
* added note in doc about compute variable usage
* correctly handles &index(-x) where x is a number > 1
* improved error message if 'follow' parameter does not point to
a leaf in configuration tree
* overdue doc changes: s/WarpedThing/Warper/g in pod docs
2.045 2013-10-18
* Manually restored dep on MouseX::NativeTraits
* bumped dep on Config::Model::Tester to 2.046
* cme: print an error message when no application is
specified (Closes Debian #726447)
2.044 2013-10-13
The main change of this release is the addition of a JSON backend
so that cme can read and write JSON configuration files. Given that
JSON is more and more used, this new backend is bound to be useful.
Other fixes:
* cme:
* force write back if -force option is used
* updated doc
2.043 2013-09-20
* build depends on Config::Model::Tester 2.046 to avoid dependency
issues
* Value: accept yes/no true/false as default value for Boolean.
This can make model declaration more consistent when boolean
value must be written as true/false, yes/no. In this case,
forcing model developer to write default value as 0/1 was not
cool and prevented generation of model like LcdProc's model.
2.042 2013-09-15
* Config::Model: load AnyEvent as soon as possible to avoid
test issues
* ListId: fix typos in pod doc
* scripts: use /usr/bin/env to be more portable (e.g. for Mac OSX)
2.041 2013-08-14
Main changes for this release are:
* The ENCRYPT parameter of Popularity contest model was changed from
boolean type to a yes,maybe,no value, thus allowing a
"réponse de Normand" ;) This follows up resolution of Debian
bug #714917.
* Config::Model::Tester class was moved in its own distribution.
Hence this distribution now build depends on Config::Model::Tester
Other bug fixes:
* Avoid warning with 'cme list' (Closes Debian #719197)
* ShellVar backend: Allow variable assignement like "foo = value".
This is not legal is Shell but sometimes used in configuration files
using a shell like syntax (Closes Debian #719256)
Other changes:
* Removed build-dep on File::Copy::Recursive
2.040 2013-07-20
* Fix '~' in path substitution in BackendMgr
* Skip cme command test on non unix-like systems
2.039 2013-07-18
Framework changes:
* CheckList:
+ Added clear_item and clear_layered methods
+ added user mode to retrieve data
* clear now reset (undefs) a check-list instead of setting items to 0
* load_data accepts hash ref
* get_check_list_as_hash: added user mode, don't return 0 for undef items
* set_checked_list_as_hash: Missing items in the given list of parameters are now reset
* Added dependency on Module::Runtime to avoid test failure on Mac and Windows
Backends:
* BackendAny: lack of suffix method is now an info not a warning
* BackendMgr:
+ added $home override for tests
+ added default_layer backend parameter
+ added os_config_dir parameter
- die if obsolete read_config_dir or write_config_dir is specified
Test framework:
* Tester:
+ allow override of home directory for tests
+ can also use $model for internal tests
* check test item now accepts array refs
Doc:
* added log config file in contrib
2.038 2013-07-03
Framework changes:
* cme: added -backup option.
Application changes:
* popcon model:
* replace yes/no enum value with boolean written as yes/no
+ added ENCRYPT support
Backends:
* all: don't loose part of comment when '#' is embedded in comment
* Ini backend: handle storage to non available element by ditching data
2.037 2013-06-15
Framework changes:
* renamed ChangeLog in Changes to conform to Perl standards
* added missing dep on File::Slurp
* cme: added -try-app-as-model option (experimental)
* Most pod docs: Replaced obsolete links to Config::Model::AutoRead
with Config::Model::BackendMgr
Application changes:
* Removed LcdProc model (now in its own Perl distribution)
2.036 2013-05-25
Framework changes:
* config-edit: added deprecation warning
* Value:
* fix pod doc error in L<> which tripped smoke tests
* apply_fixes: check after fix must be asynchronous
* Node::load_data: use a predictable order to accept elements.
This change fixes the smoke test error in t/backend_ini.t
(Closes Debian #709785)
Test changes:
* make t/pod.t run only when AUTHOR_TESTING is set
(Closes RT 8533 and Debian #709784)
2.035 2013-04-27
* Node has_element: small optimisation for common case
* cme:
* make sure that async store is used before actual check
* load Tk only when using edit command (avoids issues on exit
with AnyEvent)
2.034 2013-04-17
* Model: fix generation of model doc that broke with 2.032
2.033 2013-04-15
* Model: load returns loaded class in the correct order. Otherwise
Config::Model::Itself will write back config classes in a random
order (for files declaring more than one class)
2.032 2013-04-15
Framework Changes:
* Model: completely re-organized the way a model is loaded to
be able to add model extensions to an included class
enable search in tree element, values and tree documentation.
* config-edit: cleaned up option names (always accept '-' in place of '_')
* Config/Model/AnyThing.pm: fix location string and fix grab function
1.243 2011-05-02
* Application changes:
* dpkg control: bumped standard version to 3.9.2
* dpkg: fix spelling . Closes RT# 67783 and 67784. Thanks carnil
* dpkg control license: tweaked grammar to accept commas in license
fields. Closes Debian #624305. Thanks Niko Tyni.
* Dpkg/Control/Source.pl : added XS-Python-Version ans X-Python-Version
(first steo to solve Debian #624321)
* Debian Dpkg Meta model: package filter is computed from group-filter
OR private policy
* Framework changes:
* reworked warp registration mechanism (Changed inherited WarpedThing into
delegation to Warper)
* t/debian*.t: Put back Apt::Pkg test to avoid smoke test failure
* ValueComputer: Fixed bug to allow temporary variables and $_ in eval'ed
formulas
1.242 2011-04-07
* Application changes:
* dpkg control: added Build-Conflicts field
* dpkg: Added model for debian/source/options and debian/clean files
* Framework changes:
* Value: don't perform value check when fetching standard or default value
* Backend/Plainfile: now support list element in the form of multi line file.
Each line of the file is a value of the list.
* t/fuse_ui.t: skip test if lsmod cannot be used (e.g. Mandriva)
* t/debian*.t: skip test when /etc/debian_version is not found
1.241 2011-04-07
* Framework changes:
* Build depend on Test::Differences
* Load and grab: fix to accept '-' in element names
* Model.pm: Added value help and summary in generated documentation
* DumpAsData: skip hash keys containing undef values
1.240 2011-04-05
* Framework changes:
* Most *.pm: replaced 'no Moose' by 'no Any::Moose'
1.238 2011-04-05
* Framework changes:
* Build.PL: removed dead code that cause downstream pacaking problems.
* Model.pm: fix cosmetic issue with doc generation.
1.237 2011-04-04
* Framework changes:
* added MouseX::NativeTraits dependency (fix RT #67196)
* config-edit: fixed typo (fix RT #66403)
* Value, Node, AnyId: use dclone to backup constructor parameters
* Model: Correctly write author and copyright in doc (i.e not as ARRAY0x0...)
* Yaml backend: fill full_dump option (did not work when set to 0)
* Application changes:
* dpkg control dependency:
- Dependency filtering mechanism uses source package name to find
filter value in Meta. This makes more sense than using binary package
name
1.236 2011-04-01
* Application changes:
* dpkg control dependency:
- Dependency filtering mechanism now use dpkg meta
package_dependency_filter value (i.e. a user parameter).
Debian_perl package will be filtered on lenny by default
Filter mechanism can be overriden in a package by package basis
See Debian::Dpkg::Meta config class for details.
- Warn if a package is unknown.
- Accepts version specified with dpkg variables.
* dpkg control and copyright: warn if dh-make-perl boilerplate is found
* dpkg control: added Package-Type parameter (Peter Pentchev)
* Dpkg meta: new class to enable user to customize dpkg editor.
(email-updates and dependency-filter). Content of meta is saved in
~/.dpkg-meta.yml
* Dpkg control: change e-mail address based on content of meta
email-updates
* Framework changes:
* Value: added replace_follow parameter to specify automatic
replacement based on a hash somewhere in the configuration
tree (used by dpkg e-mail update)
* Extracted initialisation of reader and writer from new() and moved in
init() method to avoid deep recursion on startup.
* Use Any::Moose instead of plain Moose
* Removed dependency on MooseX::Singleton
* Model: added author, copyright, license fields. This data is not used by
Config::Model, but can be used in the user interface or to generate config
class doc
* AnyThing: Fix parsing of multi line annotations. Now use Pod::POM
to load annocation from Pod document
* dist.ini: Depends on Pod::POM
* Model.pm: added generate_doc method
* config-edit: new -gen-pod option to generate pod document from config class
* HashId: fix default_with_init to be able to auto-create leaf values
specified in the model
1.235 2011-03-01
* Application changes:
* dpkg control source model: Encourage Standard-Version 3.9.1
* dpkg control dependency: only versions older than old-stable (i.e.
not found on madison) will trigger a warning
* dpkg copyright: Handle license in header (Closes Debian #614776)
* Dpkg copyright backend: skip empty copyright lines
* Framework changes:
* WarpedThing: Can warp based on the location in a tree. For instance to make
an element mandatory in one place and not in another. Used by Debian copyright model
* Value: mandatory values also require non-empty strings
* config-edit: Force to load all sub-models (i.e. control, copyright) of
( run in 2.000 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )