private void HandleOther(string arg, CommandRequestedEnum state) { switch (state) { case CommandRequestedEnum.GetSnapshot: parameters.SnapshotSaveFilePath = arg; if (!FileCanBeSaved(arg)) { throw new InvalidParameterExcetion("Invalid parameter: " + arg); } break; case CommandRequestedEnum.CompareSnapshots: parameters.DiffSaveFilePath = arg; if (!FileCanBeSaved(arg)) { throw new InvalidParameterExcetion("Invalid parameter: " + arg); } break; } }
public void Init(string[] args) { var currentState = CommandRequestedEnum.None; commandRequested = CommandRequestedEnum.None; for (int i = 0; i < args.Length; ++i) { switch (args[i].ToLower()) { case "-s": case "--search": HandleSearch(args, ref i); commandRequested |= CommandRequestedEnum.GetSnapshot; currentState = CommandRequestedEnum.GetSnapshot; break; case "-c": case "--compare": HandleCompare(args, ref i); commandRequested |= CommandRequestedEnum.CompareSnapshots; currentState = CommandRequestedEnum.CompareSnapshots; break; case "--sortbysize": parameters.DiffSortBySize = true; break; case "--parallel": parameters.ParalelFind = true; break; case "-h": case "--help": commandRequested = CommandRequestedEnum.Help; // do not proccess anything more just show help return; default: HandleOther(args[i], currentState); break; } } if ((commandRequested & CommandRequestedEnum.CompareSnapshots) == 0 && parameters.DiffSortBySize) { throw new InvalidParameterExcetion("Sort by size specified but snapshot to compare doesnt"); } if ((commandRequested & CommandRequestedEnum.CompareSnapshots) > 0 && string.IsNullOrEmpty(parameters.DiffSaveFilePath)) { throw new InvalidParameterExcetion("Diff file path not specified"); } short snapAndCompare = (short)CommandRequestedEnum.CompareSnapshots + (short)CommandRequestedEnum.GetSnapshot; if (((short)commandRequested & snapAndCompare) == (short)CommandRequestedEnum.GetSnapshot && string.IsNullOrEmpty(parameters.SnapshotSaveFilePath)) { throw new InvalidParameterExcetion("Snapshot file path not specified"); } }