crudini NEWS                                    -*- outline -*-

* Noteworthy changes in release 0.9.6 (2025-04-16)

  Support BOM correctly.  Previously we would have stripped any
  Byte Order Mark, and incorrectly matched items on the first line.

  Extraneous blank lines are avoided when deleting a section.
  Previously blank lines preceeding a [section] were not removed.
  Note this will collapse multiple empty lines preceding all sections.

  Support creating a section called "default".  Previously this
  would have been disallowed, with an invalid section name error.

  Support ensuring a single space in all 'name = value' entries in the file
  with --ini-options=space.  This is symmetric and opposite to the existing
  --ini-options=nospace option.

  Support ensuring a single blank line between sections, and no blank lines
  at the start or end of the file, with --ini-options=sectionspace.


* Noteworthy changes in release 0.9.5 (2023-10-04)

** Improvements

  Support for multiple --set and --del, or --get operations,
  allowing for more efficient and atomic updates to multiple parameters.

  Support indented ini files with --ini-options=ignoreindent.
  Indentation is ignored (and maintained) in the ini file.

  --format=sh will now attempt to output a whole ini file in sh format.
  Previously it would have only printed the section names.


* Noteworthy changes in release 0.9.4 (2022-12-23)

** Bug fixes

  Fix updating of flag only parameters so they
  don't have '=' or '=crudini_no_arg' added added on update.

  Handle closed stdin/stdout gracefully, without giving errors.

** Improvements

  Windows support.

  Windows line endings are maintained.

  Lists can be delimited with arbitrary whitespace with `--list-sep=`.

  Support for unspaced "name=val" format with `--ini-options=nospace`.


* Noteworthy changes in release 0.9.3 (2019-08-30)

** Bug fixes

  Reading ini files with windows line endings is again supported.
  Regression added in v0.9.

** Improvements

  python 3 support.


* Noteworthy changes in release 0.9 (2016-12-13)

** Bug fixes

  Write errors to stdout are diagnosed correctly and consistently.

  Replacing symlinks now replaces the target rather than the symlink itself.

** Changes in behavior

  The case of parameters is maintained with --get.

** Improvements

  Single token parameters (without equals) are now supported,
  which are used in mysql config for example.


* Noteworthy changes in release 0.8 (2016-11-23)

** Bug fixes

  crudini now handles parameters starting with "rem".
  Previously an entry such as "remote = 1" would be ignored.

** New features

  Support mercurial config files by treating lines starting
  with '%' as comments, thus ignoring mercurial '%include'
  and '%unset' directives.


* Noteworthy changes in release 0.7 (2015-06-14)

** Bug fixes

  crudini no longer removes a blank line from the start of a file
  which has no sections, or options outside a section.
  [bug introduced in version 0.5]

  Files are now synced after writing for better Durability.

  Separate locking files are no longer used which avoids
  deadlock in cases where the system is stopped in the
  small window where these files exist.


* Noteworthy changes in release 0.5 (2015-01-28)

** Bug fixes

  Lock files are cleaned up robustly.  Previously there was a race condition
  resulting in blocked subsequent edits, due to a lingering lock file.

  --del will ignore requests to delete a parameter in a non-existing section
  (unless --existing is used).  Previously it failed citing the missing section.

** New features

  The --existing option takes parameters to give more control over what needs
  to pre-exist.  So you can specify for example that a file needs to exist,
  but any items within it are created as needed.

  A new --verbose option was added to indicate on stderr wether the
  request resulted in a config change or not.  This can be used to
  determine whether to restart programs etc.

** Changes in behavior

  Files are created by default if missing, unless --existing is specified.

** Improvements

  Protections against creating unparseable ini files were added.

  stdin can be parsed just as with normal files.

  File writes are avoided if there are no changes to the config.
