Changelog
=========
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

<!--
## [X.Y.Z] - YYYY-MM-DD or [Unreleased]
#### Added
#### Changed
#### Deprecated
#### Removed
#### Fixed
#### Security
#### Internal
#### Todo (for Unreleased)
-->



## [0.6.0.0] 2023-07-07
#### Changed
- Rename package to ActiveConfigProgramOptions
- Repository updated to use ActiveConfigParser rather than ConfigParserEnhanced.
#### Deprecated
- Note: Backwards compatibility with SetProgramOptions from github not guaranteed
  because this will use the newer ActiveConfigParser software stack.



## [0.5.0.2] 2022-01-07
#### Changed
- Documentation updates



## [0.5.0.1] 2021-12-30
#### Changed
- Documentation updates



## [0.5.0] 2021-12-20
#### Added
- Open Source License approved. Adding 3-Clause BSD license files and
  source headers.
- github actions files for CI/CD testing will be added to this version
  number once code is posted to https://github.com/sandialabs/SetProgramOptions



## [0.4.0] 2021-11-23
#### Added
#### Changed
- Changes to `opt-set-cmake-var` behaviour:
  - Trigger a WARNING if `PARENT_SCOPE` and a _TYPE_ is provided since CMake
    requires TYPED vars to be CACHE vars and `PARENT_SCOPE` will force the
    var to be considered a non CACHE var that would store the parameters
    before `PARENT_SCOPE` in the call as _list_ entries. (TRILFRAME-128)
  - Trigger an exception if `PARENT_SCOPE` and `FORCE` are both provided since
    `FORCE` is only valid for CACHE variables but `PARENT_SCOPE` is only valid
    for non-CACHE vars (and as noted above will _force_ the `set()` operation
    to be a non-CACHE var which then triggers a CMake error because `FORCE` is
    invalid to that form of `set()`. (TRILFRAME-128)
  - **bash** generated options that have a TYPE and `PARENT_SCOPE` are processed
    to generate the same _list_ string that would be generated by the matching
    `set()` operation (with the warning). (TRILFRAME-128)
  - For **bash** generation, trigger a WARNING and DO NOT generate the `-D` CLI option
    if `opt-set-cmake-var` without `FORCE` is called on a CMake Cache variable that has
    already been set. (TRILFRAME-120).
  - For **bash** generation, trigger a WARNING and DO NOT generate the `-D` CLI option
    if `opt-set-cmake-var` is called on a non-cache CMake variable. (TRILFRAME-136)
  - For **bash** generation, always add a _TYPE_ to the `-D` CLI option. (TRILFRAME-136)
- Revert(ish) the modifications from MR12 which removed the error when generating
  BASH output if there is an unhandled CMake variable left hanging around.
  Rather than make this an unavoidable error though, ExpandVarsInText now inherits
  from `configparserenhanced.ExceptionControl` and will raise a "MINOR"
  `exception_control_event` (i.e., throws if `exception_control_level` is 4 or greater).
  We also tie this _ecl_ to the _ecl_ of the `SetProgramOptions` class so changing this
  will affect whether or not the exception is raised or if the output returned is an
  empty string.
#### Deprecated
#### Removed
#### Fixed
- Bash generation handling of the FORCE flag. See TRILFRAME-120 for details.
#### Security
#### Internal
- Add test to verify that `opt-remove` also works to remove variables added
  by `opt-set-cmake-var`.
- Changed `VariableFieldData` so that it won't use `dataclasses` to keep our
  Python compatibilty to 3.6 (`dataclasses` requires 3.7 and higher).
#### Todo (for Unreleased)



## [0.3.0] - 2021-06-15
#### Added
#### Changed
- Relocated `setprogramoptions` package to `src/`
- Relocated _examples_ into `examples/` directory.
- Improved `gitlab-ci.yml` pipeline.
#### Deprecated
#### Removed
#### Fixed
#### Security
#### Internal
#### Todo (for Unreleased)



## [0.2.0] - 2021-06-08
#### Added
- `common.py` - moved some free-functions to this.
- Improved *variable* processing. Variables should now be encoded in our pseudo-langauge
  that has a syntax like this: `${VARNAME|VARTYPE}`.
  - `ENV` - is the only 'type' that is known to `SetProgramOptions`
  - `CMAKE` - is known to `SetProgramOptionsCMake`, which denotes a "CMake" variable
    which would be part of the internal state. This mostly makes sense when generating
    CMake Fragments, but we also attempt to track variables that are set when generating
    BASH output and will perform expansions when a prevoulsly set value is known.
  - A `ValueError` will be raised if "BASH" output generation is attempted with a "CMAKE"
    var type still embedded in the .ini file.
#### Changed
- _values_ containing spaces in them will have double quotes (`"`) added to them.
#### Internal
- Modified `_gen_option_entry` to detect values with spaces in them and add quotes (`"`) to the string.



## [0.1.0] - 2021-04-29
#### Added
- Initial version release. From now on changes should be noted in the
  CHANGELOG.
