public static void AddConflict(ArgumentHeader master, params ArgumentHeader[] slaves) { foreach (var slave in slaves) { AddConflict(master, slave); } }
private static IEnumerable <ArgumentHeader> GetDependeds(ArgumentHeader master) { return (_dependenciesDictionary.Where(kvp => kvp.Value.Contains(master)) .Select(kvp => kvp.Key) .Distinct()); }
static string GetSubargumentUsageDetails(ArgumentHeader header) { if (header.HasValue) { return(String.Format(SubargumentWithValueUsageFormat, header.Token, header.Value.Name)); } return(String.Format(SubargumentWithoutValueUsageFormat, header.Token)); }
public static bool TryGetHeader(string token, out ArgumentHeader header) { header = null; if (token == null) { return(false); } header = Headers.FirstOrDefault(h => h.Token == token); return(header != null); }
public static IEnumerable <ArgumentHeader> GetConflicts(ArgumentHeader master) { IList <ArgumentHeader> conflicts; if (_conflictsDictionary.TryGetValue(master, out conflicts)) { return(conflicts); } return(new ArgumentHeader[0]); }
private static IEnumerable <ArgumentHeader> GetDependencies(ArgumentHeader slave) { IList <ArgumentHeader> dependencies; if (_dependenciesDictionary.TryGetValue(slave, out dependencies)) { return(dependencies); } return(new ArgumentHeader[0]); }
public static void AddConflict(ArgumentHeader master, ArgumentHeader slave) { IList <ArgumentHeader> conflicts; if (!_conflictsDictionary.TryGetValue(master, out conflicts)) { _conflictsDictionary[master] = (conflicts = new List <ArgumentHeader>()); } conflicts.Add(slave); }
public static void AddDependency(ArgumentHeader slave, ArgumentHeader master) { IList <ArgumentHeader> dependencies; if (!_dependenciesDictionary.TryGetValue(slave, out dependencies)) { _dependenciesDictionary[slave] = (dependencies = new List <ArgumentHeader>()); } dependencies.Add(master); }
private Routine BuildRoutine(ArgumentHeader header) { Type routineType; if (!_routines.TryGetValue(header, out routineType)) { throw new NotImplementedException(); } var routine = Activator.CreateInstance(routineType) as Routine; routine.SetArguments(_arguments); return(routine); }
static string GetUsage(ArgumentHeader header) { var argument = header.Token; var appfile = AppDomain.CurrentDomain.FriendlyName; if (header.HasValue) { argument += @" " + String.Format(UsageValueFormat, header.Value.Name); } if (!header.HasSubArgument) { return(String.Format(UsageFormat, appfile, argument)); } var subargs = String.Join(@" ", header.SubArguments.Select(GetSubargumentUsage)); return(String.Format(UsageWithSubargumentsFormat, appfile, argument, subargs)); }
public static IEnumerable <Argument> Parse(string cliArguments) { var args = new List <Argument>(); foreach (var phrase in GetPhrasesDictionary(cliArguments)) { ArgumentHeader header; if (!ArgumentHeader.TryGetHeader(phrase.Key, out header)) { throw new UnexpectedArgumentException(phrase.Key); } args.Add(new Argument(header, phrase.Value)); } CheckIsValidArgumentSet(args); return(args); }
static void SetConflicts() { foreach (var header in ArgumentHeader.Headers) { ArgumentHeader.AddConflict(Help, header); } foreach (var header in ArgumentHeader.Headers) { ArgumentHeader.AddConflict(ImportDb, header); } foreach (var header in ArgumentHeader.Headers) { ArgumentHeader.AddConflict(ExportDb, header); } ArgumentHeader.AddConflict(new [] { DropImport, DropRecords, DropEverything }); ArgumentHeader.AddConflict(new[] { Import, ImportSource }); ArgumentHeader.AddConflict(new [] { ShowSources, ShowRules, ShowImports }); }
static string GetSubargumentDetails(ArgumentHeader subargument) { return(String.Format(SubArgumentUsageFormat, GetSubargumentUsageDetails(subargument))); }
static string GetHeaderString(ArgumentHeader header) { return(String.Format(TokenFormat, header.Token, header.Description)); }
public IEnumerable <Argument> All(ArgumentHeader header) { return(_arguments.Where(a => a.Header == header)); }
static string GetSubargumentUsage(ArgumentHeader subargument) { return(subargument.HasValue ? String.Format(SubargumentFormat, subargument.Token + @" " + subargument.Value.Name) : String.Format(SubargumentFormat, subargument.Token)); }
private Argument(ArgumentHeader header, string value) { _header = header; _value = value; }
public Argument First(ArgumentHeader header) { return(_arguments.First(a => a.Header == header)); }
static void MakeConstants() { Help = new ArgumentHeader { Token = @"usage", Description = @"Выводит справку по аргументам командной строки", Value = ArgumentHeader.ArgumentValue.Empty }; DropImport = new ArgumentHeader { Token = @"drop-import", Description = @"Удаляет записи, импортированные с указанным идентификатором импорта", Value = new ArgumentHeader.ArgumentValue { Name = @"import_id", Description = @"Идентификатор импорта" } }; DropRecords = new ArgumentHeader { Token = @"drop-records", Description = @"Удаляет все импортированные записи", Value = ArgumentHeader.ArgumentValue.Empty }; DropEverything = new ArgumentHeader { Token = @"drop-everything", Description = @"Очищает базу данных, удаляя все импортированные записи и настройки", Value = ArgumentHeader.ArgumentValue.Empty }; IKnowWhatImDoing = new ArgumentHeader { Token = @"i-know-what-i-m-doing", Description = @"Отключает запрос подтверждения при деструктивных операциях", Value = ArgumentHeader.ArgumentValue.Empty }; Import = new ArgumentHeader { Token = @"import", Description = @"Импортирует записи из произвольного источника", Value = new ArgumentHeader.ArgumentValue { Name = @"source", Description = @"Источник записей. Тип источника должен соответствовать типу правила" } }; ImportId = new ArgumentHeader { Token = @"import-id", Description = @"Задает идентификатор импорта при импортировании записей из произвольного источника", IsSubArgument = true, Value = new ArgumentHeader.ArgumentValue { Name = @"id", Description = @"Идентификатор импорта" } }; RuleId = new ArgumentHeader { Token = @"rule-id", Description = @"Задает идентификатор правила для импортирования записей из произвольного источника", IsSubArgument = true, Value = new ArgumentHeader.ArgumentValue { Name = @"id", Description = @"Идентификатор правила" } }; EmbedSource = new ArgumentHeader { Token = @"embed-source", Description = @"Сохранить образ источника в базе данных", IsSubArgument = true, Value = ArgumentHeader.ArgumentValue.Empty }; ImportSource = new ArgumentHeader { Token = @"import-source", Description = @"Производит импорт записей из источника с указанным идентификатором", Value = new ArgumentHeader.ArgumentValue { Name = @"id", Description = @"Идентификатор источника" } }; ImportDb = new ArgumentHeader { Token = @"import-db", Description = @"Производит замену текущей базы данных", Value = new ArgumentHeader.ArgumentValue { Name = @"file", Description = @"Путь к файлу новой базы данных" } }; ExportDb = new ArgumentHeader { Token = @"export-db", Description = @"Готовит базу данных к замене", Value = new ArgumentHeader.ArgumentValue { Name = @"file", Description = @"Путь к создаваемому файлу замены" } }; ShowSources = new ArgumentHeader { Token = @"show-sources", Description = @"Выводит список зарегистрированных источников записей", Value = ArgumentHeader.ArgumentValue.Empty }; ShowRules = new ArgumentHeader { Token = @"show-rules", Description = @"Выводит список правил импорта", Value = ArgumentHeader.ArgumentValue.Empty }; ShowImports = new ArgumentHeader { Token = @"show-imports", Description = @"Выводит список идентификаторов импорта", Value = ArgumentHeader.ArgumentValue.Empty }; Batch = new ArgumentHeader { Token = @"batch", Description = @"Выполняет указанный пакетный файл", Value = new ArgumentHeader.ArgumentValue { Name = @"file", Description = @"Пакетный файл" } }; Silent = new ArgumentHeader { Token = @"silent", Description = @"Уменьшает количество выводимой на экран информации", Value = ArgumentHeader.ArgumentValue.Empty }; }
static string GetConflicts(ArgumentHeader header) { var conflicts = String.Join(@", ", header.ConflictsWith.Select(c => c.Token)); return(String.Format(Conflicts, conflicts)); }
static void SetDependencies() { ArgumentHeader.AddDependency(Import, ImportId); ArgumentHeader.AddDependency(Import, RuleId); ArgumentHeader.AddDependency(Import, EmbedSource); }
static string GetSubargumentHeader(ArgumentHeader subargument) { return(String.Format(SubArgumentHeaderFormat, subargument.Token, subargument.Description)); }
public bool Has(ArgumentHeader header) { return(_arguments.Any(a => a.Header == header)); }