-
Reported by Stephane Chazelas. Potentially sensitive arguments could be leaked to the environment during completion computation.
-
Enhance clarity and maintainability by introducing comprehensive (AI generated) docstrings for methods in the `Main` class, detailing functionality, parameters, and return types.
-
Add the command-line arguments. They don't do anything yet.
-
It was being run at configuration time, not build time.
-
This is to catch pull requests that make changes that would affect automatically generated job files without including those modifications.
-
This makes it much more convention to use the initializeFromArgv functions since you can use string literals.
-
For optional parameter/choices, generate an overloaded config method that takes no arguments. This makes it possible to convert from a bare argument to one that takes an optional parameter without breaking binary compatibility.
-
Changing from bool requiring true to string requiring the empty string is more consistent with the CLI and makes it possible to add an optional parameter or choices later without breaking compatibility.
-
Flatten everything to make it easier to map command-line flags to json. The old structure was an illusion anyway because there was no mechanism to enforce that things were in the right place. This also helps with future flexibility.
-
Use "file" consistently for specifying a file path. We use "filename" when adding attachments for a completely different purpose.
-
The code was assuming everything was happening inside dictionaries. Instead, make the dictionary key handler creatino explicit only when iterating through dictionary keys.
-
Now still have to go through and implement the handlers.
-
Why? The main methods that create them return smart pointers so that users can initialize them when needed, which you can't do with references. Returning pointers instead of references makes for a more uniform interface.
-
Use named functions rather than just end() for clarity.