The approach to when a config setting is either a code based API or a machine level environment variable is driven by if the setting is a personal preference or shared.
Settings that are personal preferences ideally should
- Not be share with other people using the same code base.
- When running on the same machine, operate the same for different code bases that all use DiffEngine.
- Not apply to CI.
Examples:
- Custom order which depend on the tools a specific person has installed.
- Disable launching.
- Max instances to launch.
- Left/Right diff behavior.
Settings that are shared ideally should
- Checked into the code base.
- Be share with other people using the same code base.
- When running on the same machine, not effect different code bases that all use DiffEngine.
- Apply to CI.
Examples:
- File type detection.
- Adding a share custom tool. A team may be comparing custom file types, and require a shared custom tool to verify that file.