public static long GetOptionLong(this Ast.OptionsList optionsList, string name, ScriptRunner runner, ScriptEnv env, long defaultValue, long?minValue = null, long?maxValue = null) { var num = optionsList.GetOption <long>(name, runner, env, defaultValue); bool outOfRange = (minValue.HasValue && num < minValue.Value) || (maxValue.HasValue && num > maxValue.Value); if (outOfRange) { if (minValue.HasValue && !maxValue.HasValue) { throw new Exception($"{name} must be an integer ≥ {minValue.Value}."); } else if (minValue.HasValue && maxValue.HasValue) { throw new Exception($"{name} must be an integer between {minValue.Value} and {maxValue.Value}."); } else if (!minValue.HasValue && maxValue.HasValue) { throw new Exception($"{name} must be an integer ≤ {maxValue.Value}."); } } return(num); }
public static bool GetOptionBool(this Ast.OptionsList optionsList, string name, ScriptRunner runner, ScriptEnv env, bool defaultValue) { long num = optionsList.GetOption <long>(name, runner, env, defaultValue ? 1 : 0); if (num != 0 && num != 1) { throw new Exception($"{name} must be 0 or 1."); } else { return(num == 1); } }