public CommandExecutor(ICommandExpressionParser parser = null) { _root = new CommandTreeNode(); _parser = parser ?? CommandExpressionParser.Instance; _output = NullCommandOutlet.Instance; _error = CommandErrorWriter.Instance; }
private void DisplayTcpServerInfo(TcpServer server, ICommandOutlet output, IChannel activeChannel) { this.DisplayListenerInfo(server, output); if (!server.IsListening) { return; } output.WriteLine(); output.Write(CommandOutletColor.DarkMagenta, "ID\t"); output.Write(CommandOutletColor.DarkMagenta, ResourceUtility.GetString("${LastReceivedTime}") + "\t\t"); output.Write(CommandOutletColor.DarkMagenta, ResourceUtility.GetString("${LastSendTime}") + "\t\t"); output.Write(CommandOutletColor.DarkMagenta, ResourceUtility.GetString("${LocalEndPoint}") + "\t\t"); output.WriteLine(CommandOutletColor.DarkMagenta, ResourceUtility.GetString("${RemoteEndPoint}") + "\t"); var channels = server.ChannelManager.GetActivedChannels(); foreach (TcpServerChannel channel in channels) { if (channel == activeChannel) { output.Write(CommandOutletColor.Magenta, "* "); } output.WriteLine( "{0}\t{1:yyyy-MM-dd HH:mm:ss}\t{2:yyyy-MM-dd HH:mm:ss}\t{3}\t\t{4}", channel.ChannelId, channel.LastReceivedTime, channel.LastSendTime, channel.LocalEndPoint, channel.RemoteEndPoint); } output.WriteLine(); }
public static void PrintHelpInfo(ICommandOutlet output, ICommand command) { if (output == null || command == null) { return; } DisplayNameAttribute displayName = (DisplayNameAttribute)TypeDescriptor.GetAttributes(command)[typeof(DisplayNameAttribute)]; DescriptionAttribute description = (DescriptionAttribute)TypeDescriptor.GetAttributes(command)[typeof(DescriptionAttribute)]; output.Write(CommandOutletColor.Blue, command.Name + " "); if (!command.Enabled) { output.Write(CommandOutletColor.DarkGray, "({0})", ResourceUtility.GetString("${Text.Disabled}")); } if (displayName == null || string.IsNullOrWhiteSpace(displayName.DisplayName)) { output.Write(ResourceUtility.GetString("${Text.Command}")); } else { output.Write(ResourceUtility.GetString(displayName.DisplayName, command.GetType().Assembly)); } CommandOptionAttribute[] optionAttributes = (CommandOptionAttribute[])command.GetType().GetCustomAttributes(typeof(CommandOptionAttribute), true); if (optionAttributes != null && optionAttributes.Length > 0) { output.WriteLine("," + ResourceUtility.GetString("${Text.CommandUsages}"), optionAttributes.Length); output.WriteLine(); string commandName = command.Name; output.Write(CommandOutletColor.Blue, commandName + " "); foreach (var optionAttribute in optionAttributes) { if (optionAttribute.Required) { output.Write("<-"); output.Write(CommandOutletColor.DarkYellow, optionAttribute.Name); output.Write("> "); } else { output.Write("[-"); output.Write(CommandOutletColor.DarkYellow, optionAttribute.Name); output.Write("] "); } } output.WriteLine(); int maxOptionLength = GetMaxOptionLength(optionAttributes) + 2; foreach (var optionAttribute in optionAttributes) { int optionPadding = maxOptionLength - optionAttribute.Name.Length; output.Write("\t-"); output.Write(CommandOutletColor.DarkYellow, optionAttribute.Name); if (optionAttribute.Type != null) { output.Write(":"); output.Write(CommandOutletColor.Magenta, GetSimpleTypeName(optionAttribute.Type)); optionPadding -= (GetSimpleTypeName(optionAttribute.Type).Length + 1); } output.Write(" (".PadLeft(optionPadding)); if (optionAttribute.Required) { output.Write(CommandOutletColor.DarkRed, ResourceUtility.GetString("${Text.Required}")); } else { output.Write(CommandOutletColor.DarkGreen, ResourceUtility.GetString("${Text.Optional}")); } output.Write(") "); if (!string.IsNullOrWhiteSpace(optionAttribute.Description)) { output.Write(ResourceUtility.GetString(optionAttribute.Description, command.GetType().Assembly)); } if (optionAttribute.Type != null && optionAttribute.Type.IsEnum) { var entries = Zongsoft.Common.EnumUtility.GetEnumEntries(optionAttribute.Type, false); var maxEnumLength = entries.Max(entry => string.IsNullOrWhiteSpace(entry.Alias) ? entry.Name.Length : entry.Name.Length + entry.Alias.Length + 2); foreach (var entry in entries) { var enumPadding = maxEnumLength - entry.Name.Length; output.WriteLine(); output.Write("\t".PadRight(optionAttribute.Name.Length + 3)); output.Write(CommandOutletColor.DarkMagenta, entry.Name.ToLowerInvariant()); if (!string.IsNullOrWhiteSpace(entry.Alias)) { output.Write(CommandOutletColor.DarkGray, "("); output.Write(CommandOutletColor.DarkMagenta, entry.Alias); output.Write(CommandOutletColor.DarkGray, ")"); enumPadding -= entry.Alias.Length + 2; } if (!string.IsNullOrWhiteSpace(entry.Description)) { output.Write(new string(' ', enumPadding + 1) + entry.Description); } } } output.WriteLine(); } } if (description != null && !string.IsNullOrWhiteSpace(description.Description)) { output.WriteLine(); output.WriteLine(CommandOutletColor.DarkYellow, ResourceUtility.GetString(description.Description, command.GetType().Assembly)); } output.WriteLine(); }
private void OnSucceed(ICommandOutlet output, IWorker worker) { output.WriteLine(Utility.GetWorkerActionContent(worker, string.Format(Properties.Resources.Text_Command_ExecutionSucceed_Message, Properties.Resources.Text_WorkerStopCommand_Name), CommandOutletColor.DarkGreen)); }
public static void PrintPluginNode(ICommandOutlet output, PluginTreeNode node, ObtainMode obtainMode, int maxDepth) { if (node == null) { return; } output.Write(CommandOutletColor.DarkYellow, "[{0}]", node.NodeType); output.WriteLine(node.FullPath); output.Write(CommandOutletColor.DarkYellow, "Plugin File: "); if (node.Plugin == null) { output.WriteLine(CommandOutletColor.Red, "N/A"); } else { output.WriteLine(node.Plugin.FilePath); } output.Write(CommandOutletColor.DarkYellow, "Node Properties: "); output.WriteLine(node.Properties.Count); if (node.Properties.Count > 0) { output.WriteLine(CommandOutletColor.Gray, "{"); foreach (PluginExtendedProperty property in node.Properties) { output.Write(CommandOutletColor.DarkYellow, "\t" + property.Name); output.Write(" = "); output.Write(property.RawValue); if (property.Value != null) { output.Write(CommandOutletColor.DarkGray, " ["); output.Write(CommandOutletColor.Blue, property.Value.GetType().FullName); output.Write(CommandOutletColor.DarkGray, "]"); } output.WriteLine(); } output.WriteLine(CommandOutletColor.Gray, "}"); } output.WriteLine(CommandOutletColor.DarkYellow, "Children: {0}", node.Children.Count); if (node.Children.Count > 0) { output.WriteLine(); foreach (var child in node.Children) { output.WriteLine(child); } } object value = node.UnwrapValue(obtainMode, null); if (value != null) { output.WriteLine(); output.WriteLine(Zongsoft.Runtime.Serialization.Serializer.Text.Serialize(value)); } }
private void DisplayFtpServerInfo(FtpServer server, ICommandOutlet output) { this.DisplayListenerInfo(server, output); }
public static void PrintPluginNode(ICommandOutlet output, PluginTreeNode node, ObtainMode obtainMode, int maxDepth) { if (node == null) { return; } output.Write(CommandOutletColor.DarkYellow, "[{0}]", node.NodeType); output.WriteLine(node.FullPath); output.Write(CommandOutletColor.DarkYellow, "Plugin File: "); if (node.Plugin == null) { output.WriteLine(CommandOutletColor.Red, "N/A"); } else { output.WriteLine(node.Plugin.FilePath); } output.Write(CommandOutletColor.DarkYellow, "Node Properties: "); output.WriteLine(node.Properties.Count); if (node.Properties.Count > 0) { output.WriteLine(CommandOutletColor.Gray, "{"); foreach (PluginExtendedProperty property in node.Properties) { output.Write(CommandOutletColor.DarkYellow, "\t" + property.Name); output.Write(" = "); output.Write(property.RawValue); if (property.Value != null) { output.Write(CommandOutletColor.DarkGray, " ["); output.Write(CommandOutletColor.Blue, property.Value.GetType().FullName); output.Write(CommandOutletColor.DarkGray, "]"); } output.WriteLine(); } output.WriteLine(CommandOutletColor.Gray, "}"); } output.WriteLine(CommandOutletColor.DarkYellow, "Children: {0}", node.Children.Count); if (node.Children.Count > 0) { output.WriteLine(); foreach (var child in node.Children) { output.WriteLine(child); } } object value = node.UnwrapValue(obtainMode); if (value != null) { var json = JsonSerializer.Serialize(value, new JsonSerializerOptions() { MaxDepth = maxDepth, WriteIndented = true, ReferenceHandler = ReferenceHandler.Preserve, }); output.WriteLine(); output.WriteLine(json); } }