circleci-config-sdk-ts
circleci-config-sdk-ts copied to clipboard
Bug: Parameters default value mismatch it's type
Is there an existing issue for this?
- [X] I have searched the existing issues
Current behavior
CustomParameter generates an entry where default parameter is not quoted. That leads to type mismatch in result YAML, since some defaults like true, on, and off can be treated as booleans instead of strings.
new CircleCI.parameters.CustomParameter(
'some_value',
CircleCI.mapping.ParameterSubtype.STRING,
"OFF"
)
parameters:
some_value:
type: string
default: OFF
Config is not valid
% circleci config validate config.yml
Error: Error in definition of command 'some-command'
Parameter error: default value of parameter 'some_value' is 'false' (type boolean): expected type string
Minimum reproduction code
https://gist.github.com/Kylmakalle/22f2c6eae2bd09758a70be2510284b33
Expected behavior
Any default provided value is "quoted" properly and aligns with parameter type.
CircleCI Config SDK version
0.12.0
Node.js version
19.0.0
In which operating systems have you tested?
- [X] macOS
- [ ] Windows
- [ ] Linux
Good catch, YAML is going to make that one difficult for us. I think the main issue will be we are using a YAML parser and don't actually have a way of informing the parser to treat this value specifically as part of a string without writing some kind of custom validation library.
Was this a blocking issue or were you able to work around using a boolean or another string value?
I believe it's possible to tweak a YAML parser. See https://github.com/eemeli/yaml/issues/391
Talking about a workaround, we can add a prefix "_OFF" and cut it using different software