private static void DisplayVariable(VariantItem item) { Console.Out.WriteLine("{0} [{1}]:", item.Name, VariantUtility.FindTypeNameByType(item.Type)); Console.Out.WriteLine("\t{0}", ConsoleUtility.For(item.Type).Format(item.Value) ?? "<null>"); Console.Out.WriteLine(); }
private static void Main(string[] args) { Queue <string> argv = new Queue <string>(args); if (!argv.Any()) { Console.Error.WriteLine(@"dbv <command> [...] commands: ls List all variables. set <name> <type> [value] Set a variable's value. If the value is omitted, null is set. get <name> Get a variable's value. rm <name> Remove a variable."); return; } string command = argv.Dequeue(); switch (command) { case "ls": { var allVariables = VariantUtility.GetAllVariables().ToList(); foreach (VariantItem variant in allVariables) { DisplayVariable(variant); } Console.WriteLine("{0} variable(s)", allVariables.Count); } break; case "get": { string name = argv.Dequeue(); if (name == null) { Console.Error.WriteLine("Variable name is missing."); return; } VariantItem item = VariantUtility.GetVariable(name); DisplayVariable(item); } break; case "set": { string name = argv.DequeueOrDefault(); string typeName = argv.DequeueOrDefault(); string value = argv.DequeueOrDefault(); if (name == null) { Console.Error.WriteLine("Variable name is missing."); return; } if (typeName == null) { Console.Error.WriteLine("Type name is missing."); return; } Type type = VariantUtility.FindTypeByTypeName(typeName); if (type == null) { Console.Error.WriteLine("Unrecognized data type."); return; } VariantUtility.SetVariableValue(name, type, ParameterUtility.For(type).Parse(value)); } break; case "rm": { string name = argv.DequeueOrDefault(); if (name != null) { VariantUtility.RemoveVariable(name); } } break; default: Console.Error.WriteLine("Unrecognized command."); break; } }