mirror of
https://github.com/Leonmmcoset/CMLeonOS.git
synced 2026-03-03 11:37:01 +00:00
拆分代码7
This commit is contained in:
116
shell/Commands/Utility/BackgroundCommand.cs
Normal file
116
shell/Commands/Utility/BackgroundCommand.cs
Normal file
@@ -0,0 +1,116 @@
|
||||
using System;
|
||||
|
||||
namespace CMLeonOS.Commands.Utility
|
||||
{
|
||||
public static class BackgroundCommand
|
||||
{
|
||||
public static void ChangeBackground(string hexColor, Action<string> showError)
|
||||
{
|
||||
try
|
||||
{
|
||||
hexColor = hexColor.TrimStart('#');
|
||||
|
||||
if (hexColor.Length == 6)
|
||||
{
|
||||
int r = Convert.ToInt32(hexColor.Substring(0, 2), 16);
|
||||
int g = Convert.ToInt32(hexColor.Substring(2, 2), 16);
|
||||
int b = Convert.ToInt32(hexColor.Substring(4, 2), 16);
|
||||
|
||||
ConsoleColor color = GetClosestConsoleColor(r, g, b);
|
||||
Console.BackgroundColor = color;
|
||||
Console.Clear();
|
||||
Console.WriteLine($"Background color changed to: #{hexColor}");
|
||||
}
|
||||
else
|
||||
{
|
||||
showError("Invalid hex color format. Use format: #RRGGBB or RRGGBB");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
showError($"Error changing background color: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private static ConsoleColor GetClosestConsoleColor(int r, int g, int b)
|
||||
{
|
||||
ConsoleColor[] colors = new ConsoleColor[]
|
||||
{
|
||||
ConsoleColor.Black,
|
||||
ConsoleColor.DarkBlue,
|
||||
ConsoleColor.DarkGreen,
|
||||
ConsoleColor.DarkCyan,
|
||||
ConsoleColor.DarkRed,
|
||||
ConsoleColor.DarkMagenta,
|
||||
ConsoleColor.DarkYellow,
|
||||
ConsoleColor.Gray,
|
||||
ConsoleColor.DarkGray,
|
||||
ConsoleColor.Blue,
|
||||
ConsoleColor.Green,
|
||||
ConsoleColor.Cyan,
|
||||
ConsoleColor.Red,
|
||||
ConsoleColor.Magenta,
|
||||
ConsoleColor.Yellow,
|
||||
ConsoleColor.White
|
||||
};
|
||||
ConsoleColor closestColor = ConsoleColor.Black;
|
||||
double smallestDistance = double.MaxValue;
|
||||
|
||||
foreach (ConsoleColor color in colors)
|
||||
{
|
||||
int cr, cg, cb;
|
||||
GetRGBFromConsoleColor(color, out cr, out cg, out cb);
|
||||
|
||||
double distance = Math.Sqrt(Math.Pow(r - cr, 2) + Math.Pow(g - cg, 2) + Math.Pow(b - cb, 2));
|
||||
if (distance < smallestDistance)
|
||||
{
|
||||
smallestDistance = distance;
|
||||
closestColor = color;
|
||||
}
|
||||
}
|
||||
|
||||
return closestColor;
|
||||
}
|
||||
|
||||
private static void GetRGBFromConsoleColor(ConsoleColor color, out int r, out int g, out int b)
|
||||
{
|
||||
switch (color)
|
||||
{
|
||||
case ConsoleColor.Black:
|
||||
r = 0; g = 0; b = 0; break;
|
||||
case ConsoleColor.DarkBlue:
|
||||
r = 0; g = 0; b = 128; break;
|
||||
case ConsoleColor.DarkGreen:
|
||||
r = 0; g = 128; b = 0; break;
|
||||
case ConsoleColor.DarkCyan:
|
||||
r = 0; g = 128; b = 128; break;
|
||||
case ConsoleColor.DarkRed:
|
||||
r = 128; g = 0; b = 0; break;
|
||||
case ConsoleColor.DarkMagenta:
|
||||
r = 128; g = 0; b = 128; break;
|
||||
case ConsoleColor.DarkYellow:
|
||||
r = 128; g = 128; b = 0; break;
|
||||
case ConsoleColor.Gray:
|
||||
r = 192; g = 192; b = 192; break;
|
||||
case ConsoleColor.DarkGray:
|
||||
r = 128; g = 128; b = 128; break;
|
||||
case ConsoleColor.Blue:
|
||||
r = 0; g = 0; b = 255; break;
|
||||
case ConsoleColor.Green:
|
||||
r = 0; g = 255; b = 0; break;
|
||||
case ConsoleColor.Cyan:
|
||||
r = 0; g = 255; b = 255; break;
|
||||
case ConsoleColor.Red:
|
||||
r = 255; g = 0; b = 0; break;
|
||||
case ConsoleColor.Magenta:
|
||||
r = 255; g = 0; b = 255; break;
|
||||
case ConsoleColor.Yellow:
|
||||
r = 255; g = 255; b = 0; break;
|
||||
case ConsoleColor.White:
|
||||
r = 255; g = 255; b = 255; break;
|
||||
default:
|
||||
r = 0; g = 0; b = 0; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
67
shell/Commands/Utility/Base64Command.cs
Normal file
67
shell/Commands/Utility/Base64Command.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
using System;
|
||||
|
||||
namespace CMLeonOS.Commands.Utility
|
||||
{
|
||||
public static class Base64Command
|
||||
{
|
||||
public static void ProcessBase64Command(string args, Action<string> showError, Action<string> showSuccess)
|
||||
{
|
||||
string[] parts = args.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
if (parts.Length == 0)
|
||||
{
|
||||
showError("Error: Please specify subcommand");
|
||||
showError("Usage: base64 encrypt <text> | base64 decrypt <text>");
|
||||
return;
|
||||
}
|
||||
|
||||
string subcommand = parts[0].ToLower();
|
||||
|
||||
if (subcommand != "encrypt" && subcommand != "decrypt")
|
||||
{
|
||||
showError("Error: Invalid subcommand");
|
||||
showError("Usage: base64 encrypt <text> | base64 decrypt <text>");
|
||||
return;
|
||||
}
|
||||
|
||||
if (parts.Length < 2)
|
||||
{
|
||||
showError("Error: Please specify text to process");
|
||||
showError($"Usage: base64 {subcommand} <text>");
|
||||
return;
|
||||
}
|
||||
|
||||
string text = string.Join(" ", parts, 1, parts.Length - 1);
|
||||
|
||||
Console.WriteLine("====================================");
|
||||
Console.WriteLine(" Base64");
|
||||
Console.WriteLine("====================================");
|
||||
Console.WriteLine();
|
||||
|
||||
try
|
||||
{
|
||||
if (subcommand == "encrypt")
|
||||
{
|
||||
string encoded = Base64Helper.Encode(text);
|
||||
Console.WriteLine($"Original: {text}");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine($"Encoded: {encoded}");
|
||||
}
|
||||
if (subcommand == "decrypt")
|
||||
{
|
||||
string decoded = Base64Helper.Decode(text);
|
||||
Console.WriteLine($"Encoded: {text}");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine($"Decoded: {decoded}");
|
||||
}
|
||||
|
||||
Console.WriteLine();
|
||||
showSuccess("Base64 operation completed");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
showError($"Base64 error: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
12
shell/Commands/Utility/BeepCommand.cs
Normal file
12
shell/Commands/Utility/BeepCommand.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
|
||||
namespace CMLeonOS.Commands.Utility
|
||||
{
|
||||
public static class BeepCommand
|
||||
{
|
||||
public static void ProcessBeep()
|
||||
{
|
||||
Console.Beep();
|
||||
}
|
||||
}
|
||||
}
|
||||
59
shell/Commands/Utility/CalcCommand.cs
Normal file
59
shell/Commands/Utility/CalcCommand.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
using System;
|
||||
|
||||
namespace CMLeonOS.Commands.Utility
|
||||
{
|
||||
public static class CalcCommand
|
||||
{
|
||||
public static void Calculate(string expression, Action<string> showError)
|
||||
{
|
||||
try
|
||||
{
|
||||
var parts = expression.Split(' ');
|
||||
if (parts.Length == 3)
|
||||
{
|
||||
double num1 = double.Parse(parts[0]);
|
||||
string op = parts[1];
|
||||
double num2 = double.Parse(parts[2]);
|
||||
double result = 0;
|
||||
|
||||
switch (op)
|
||||
{
|
||||
case "+":
|
||||
result = num1 + num2;
|
||||
break;
|
||||
case "-":
|
||||
result = num1 - num2;
|
||||
break;
|
||||
case "*":
|
||||
result = num1 * num2;
|
||||
break;
|
||||
case "/":
|
||||
if (num2 != 0)
|
||||
{
|
||||
result = num1 / num2;
|
||||
}
|
||||
else
|
||||
{
|
||||
showError("Division by zero");
|
||||
return;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
showError("Invalid operator. Use +, -, *, /");
|
||||
return;
|
||||
}
|
||||
|
||||
Console.WriteLine($"Result: {result}");
|
||||
}
|
||||
else
|
||||
{
|
||||
showError("Invalid expression. Use format: calc <num> <op> <num>");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
showError($"Error: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
69
shell/Commands/Utility/CalendarCommand.cs
Normal file
69
shell/Commands/Utility/CalendarCommand.cs
Normal file
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
|
||||
namespace CMLeonOS.Commands.Utility
|
||||
{
|
||||
public static class CalendarCommand
|
||||
{
|
||||
public static void ShowCalendar(string args)
|
||||
{
|
||||
int year = DateTime.Now.Year;
|
||||
int month = DateTime.Now.Month;
|
||||
|
||||
if (!string.IsNullOrEmpty(args))
|
||||
{
|
||||
string[] parts = args.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
if (parts.Length >= 1)
|
||||
{
|
||||
if (int.TryParse(parts[0], out int m) && m >= 1 && m <= 12)
|
||||
{
|
||||
month = m;
|
||||
}
|
||||
}
|
||||
|
||||
if (parts.Length >= 2)
|
||||
{
|
||||
if (int.TryParse(parts[1], out int y) && y >= 1 && y <= 9999)
|
||||
{
|
||||
year = y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DateTime firstDay = new DateTime(year, month, 1);
|
||||
int daysInMonth = DateTime.DaysInMonth(year, month);
|
||||
DayOfWeek startDayOfWeek = firstDay.DayOfWeek;
|
||||
|
||||
string[] monthNames = {
|
||||
"January", "February", "March", "April", "May", "June",
|
||||
"July", "August", "September", "October", "November", "December"
|
||||
};
|
||||
|
||||
Console.WriteLine($" {monthNames[month - 1]} {year}");
|
||||
Console.WriteLine(" Su Mo Tu We Th Fr Sa");
|
||||
|
||||
int dayOfWeek = (int)startDayOfWeek;
|
||||
if (dayOfWeek == 0) dayOfWeek = 7;
|
||||
|
||||
for (int i = 1; i < dayOfWeek; i++)
|
||||
{
|
||||
Console.Write(" ");
|
||||
}
|
||||
|
||||
for (int day = 1; day <= daysInMonth; day++)
|
||||
{
|
||||
Console.Write($"{day,2} ");
|
||||
|
||||
dayOfWeek++;
|
||||
if (dayOfWeek > 7)
|
||||
{
|
||||
dayOfWeek = 1;
|
||||
Console.WriteLine();
|
||||
Console.Write(" ");
|
||||
}
|
||||
}
|
||||
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
16
shell/Commands/Utility/HistoryCommand.cs
Normal file
16
shell/Commands/Utility/HistoryCommand.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace CMLeonOS.Commands.Utility
|
||||
{
|
||||
public static class HistoryCommand
|
||||
{
|
||||
public static void ShowHistory(List<string> commandHistory)
|
||||
{
|
||||
for (int i = 0; i < commandHistory.Count; i++)
|
||||
{
|
||||
Console.WriteLine($"{i + 1}: {commandHistory[i]}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
19
shell/Commands/Utility/PromptCommand.cs
Normal file
19
shell/Commands/Utility/PromptCommand.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
|
||||
namespace CMLeonOS.Commands.Utility
|
||||
{
|
||||
public static class PromptCommand
|
||||
{
|
||||
public static void ChangePrompt(string args, ref string prompt)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(args))
|
||||
{
|
||||
prompt = args;
|
||||
}
|
||||
else
|
||||
{
|
||||
prompt = "/";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
297
shell/Shell.cs
297
shell/Shell.cs
@@ -201,198 +201,27 @@ namespace CMLeonOS
|
||||
|
||||
public void ProcessBeep()
|
||||
{
|
||||
Console.Beep();
|
||||
Commands.Utility.BeepCommand.ProcessBeep();
|
||||
}
|
||||
|
||||
public void ChangePrompt(string args)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(args))
|
||||
{
|
||||
prompt = args;
|
||||
}
|
||||
else
|
||||
{
|
||||
prompt = "/";
|
||||
}
|
||||
Commands.Utility.PromptCommand.ChangePrompt(args, ref prompt);
|
||||
}
|
||||
|
||||
public void Calculate(string expression)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 简单的计算器,只支持加减乘除
|
||||
var parts = expression.Split(' ');
|
||||
if (parts.Length == 3)
|
||||
{
|
||||
double num1 = double.Parse(parts[0]);
|
||||
string op = parts[1];
|
||||
double num2 = double.Parse(parts[2]);
|
||||
double result = 0;
|
||||
|
||||
switch (op)
|
||||
{
|
||||
case "+":
|
||||
result = num1 + num2;
|
||||
break;
|
||||
case "-":
|
||||
result = num1 - num2;
|
||||
break;
|
||||
case "*":
|
||||
result = num1 * num2;
|
||||
break;
|
||||
case "/":
|
||||
if (num2 != 0)
|
||||
{
|
||||
result = num1 / num2;
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowError("Division by zero");
|
||||
return;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ShowError("Invalid operator. Use +, -, *, /");
|
||||
return;
|
||||
}
|
||||
|
||||
Console.WriteLine($"Result: {result}");
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowError("Invalid expression. Use format: calc <num> <op> <num>");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowError($"Error: {ex.Message}");
|
||||
}
|
||||
Commands.Utility.CalcCommand.Calculate(expression, ShowError);
|
||||
}
|
||||
|
||||
public void ShowHistory()
|
||||
{
|
||||
for (int i = 0; i < commandHistory.Count; i++)
|
||||
{
|
||||
Console.WriteLine($"{i + 1}: {commandHistory[i]}");
|
||||
}
|
||||
Commands.Utility.HistoryCommand.ShowHistory(commandHistory);
|
||||
}
|
||||
|
||||
public void ChangeBackground(string hexColor)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 移除#前缀(如果有)
|
||||
hexColor = hexColor.TrimStart('#');
|
||||
|
||||
// 解析16进制颜色代码
|
||||
if (hexColor.Length == 6)
|
||||
{
|
||||
int r = Convert.ToInt32(hexColor.Substring(0, 2), 16);
|
||||
int g = Convert.ToInt32(hexColor.Substring(2, 2), 16);
|
||||
int b = Convert.ToInt32(hexColor.Substring(4, 2), 16);
|
||||
|
||||
// 简单的颜色映射,将RGB值映射到最接近的ConsoleColor
|
||||
ConsoleColor color = GetClosestConsoleColor(r, g, b);
|
||||
Console.BackgroundColor = color;
|
||||
Console.Clear();
|
||||
Console.WriteLine($"Background color changed to: #{hexColor}");
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowError("Invalid hex color format. Use format: #RRGGBB or RRGGBB");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowError($"Error changing background color: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private ConsoleColor GetClosestConsoleColor(int r, int g, int b)
|
||||
{
|
||||
// 简单的颜色映射逻辑
|
||||
// 将RGB值映射到最接近的ConsoleColor
|
||||
ConsoleColor[] colors = new ConsoleColor[]
|
||||
{
|
||||
ConsoleColor.Black,
|
||||
ConsoleColor.DarkBlue,
|
||||
ConsoleColor.DarkGreen,
|
||||
ConsoleColor.DarkCyan,
|
||||
ConsoleColor.DarkRed,
|
||||
ConsoleColor.DarkMagenta,
|
||||
ConsoleColor.DarkYellow,
|
||||
ConsoleColor.Gray,
|
||||
ConsoleColor.DarkGray,
|
||||
ConsoleColor.Blue,
|
||||
ConsoleColor.Green,
|
||||
ConsoleColor.Cyan,
|
||||
ConsoleColor.Red,
|
||||
ConsoleColor.Magenta,
|
||||
ConsoleColor.Yellow,
|
||||
ConsoleColor.White
|
||||
};
|
||||
ConsoleColor closestColor = ConsoleColor.Black;
|
||||
double smallestDistance = double.MaxValue;
|
||||
|
||||
foreach (ConsoleColor color in colors)
|
||||
{
|
||||
// 为每个ConsoleColor计算RGB值
|
||||
// 这里使用简单的映射,实际效果可能不是很准确
|
||||
int cr, cg, cb;
|
||||
GetRGBFromConsoleColor(color, out cr, out cg, out cb);
|
||||
|
||||
// 计算欧几里得距离
|
||||
double distance = Math.Sqrt(Math.Pow(r - cr, 2) + Math.Pow(g - cg, 2) + Math.Pow(b - cb, 2));
|
||||
if (distance < smallestDistance)
|
||||
{
|
||||
smallestDistance = distance;
|
||||
closestColor = color;
|
||||
}
|
||||
}
|
||||
|
||||
return closestColor;
|
||||
}
|
||||
|
||||
private void GetRGBFromConsoleColor(ConsoleColor color, out int r, out int g, out int b)
|
||||
{
|
||||
// 简单的ConsoleColor到RGB的映射
|
||||
switch (color)
|
||||
{
|
||||
case ConsoleColor.Black:
|
||||
r = 0; g = 0; b = 0; break;
|
||||
case ConsoleColor.DarkBlue:
|
||||
r = 0; g = 0; b = 128; break;
|
||||
case ConsoleColor.DarkGreen:
|
||||
r = 0; g = 128; b = 0; break;
|
||||
case ConsoleColor.DarkCyan:
|
||||
r = 0; g = 128; b = 128; break;
|
||||
case ConsoleColor.DarkRed:
|
||||
r = 128; g = 0; b = 0; break;
|
||||
case ConsoleColor.DarkMagenta:
|
||||
r = 128; g = 0; b = 128; break;
|
||||
case ConsoleColor.DarkYellow:
|
||||
r = 128; g = 128; b = 0; break;
|
||||
case ConsoleColor.Gray:
|
||||
r = 192; g = 192; b = 192; break;
|
||||
case ConsoleColor.DarkGray:
|
||||
r = 128; g = 128; b = 128; break;
|
||||
case ConsoleColor.Blue:
|
||||
r = 0; g = 0; b = 255; break;
|
||||
case ConsoleColor.Green:
|
||||
r = 0; g = 255; b = 0; break;
|
||||
case ConsoleColor.Cyan:
|
||||
r = 0; g = 255; b = 255; break;
|
||||
case ConsoleColor.Red:
|
||||
r = 255; g = 0; b = 0; break;
|
||||
case ConsoleColor.Magenta:
|
||||
r = 255; g = 0; b = 255; break;
|
||||
case ConsoleColor.Yellow:
|
||||
r = 255; g = 255; b = 0; break;
|
||||
case ConsoleColor.White:
|
||||
r = 255; g = 255; b = 255; break;
|
||||
default:
|
||||
r = 0; g = 0; b = 0; break;
|
||||
}
|
||||
Commands.Utility.BackgroundCommand.ChangeBackground(hexColor, ShowError);
|
||||
}
|
||||
|
||||
public void TestCUI()
|
||||
@@ -536,64 +365,7 @@ namespace CMLeonOS
|
||||
|
||||
public void ShowCalendar(string args)
|
||||
{
|
||||
int year = DateTime.Now.Year;
|
||||
int month = DateTime.Now.Month;
|
||||
|
||||
if (!string.IsNullOrEmpty(args))
|
||||
{
|
||||
string[] parts = args.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
if (parts.Length >= 1)
|
||||
{
|
||||
if (int.TryParse(parts[0], out int m) && m >= 1 && m <= 12)
|
||||
{
|
||||
month = m;
|
||||
}
|
||||
}
|
||||
|
||||
if (parts.Length >= 2)
|
||||
{
|
||||
if (int.TryParse(parts[1], out int y) && y >= 1 && y <= 9999)
|
||||
{
|
||||
year = y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DateTime firstDay = new DateTime(year, month, 1);
|
||||
int daysInMonth = DateTime.DaysInMonth(year, month);
|
||||
DayOfWeek startDayOfWeek = firstDay.DayOfWeek;
|
||||
|
||||
string[] monthNames = {
|
||||
"January", "February", "March", "April", "May", "June",
|
||||
"July", "August", "September", "October", "November", "December"
|
||||
};
|
||||
|
||||
Console.WriteLine($" {monthNames[month - 1]} {year}");
|
||||
Console.WriteLine(" Su Mo Tu We Th Fr Sa");
|
||||
|
||||
int dayOfWeek = (int)startDayOfWeek;
|
||||
if (dayOfWeek == 0) dayOfWeek = 7;
|
||||
|
||||
for (int i = 1; i < dayOfWeek; i++)
|
||||
{
|
||||
Console.Write(" ");
|
||||
}
|
||||
|
||||
for (int day = 1; day <= daysInMonth; day++)
|
||||
{
|
||||
Console.Write($"{day,2} ");
|
||||
|
||||
dayOfWeek++;
|
||||
if (dayOfWeek > 7)
|
||||
{
|
||||
dayOfWeek = 1;
|
||||
Console.WriteLine();
|
||||
Console.Write(" ");
|
||||
}
|
||||
}
|
||||
|
||||
Console.WriteLine();
|
||||
Commands.Utility.CalendarCommand.ShowCalendar(args);
|
||||
}
|
||||
|
||||
public void SleepCommand(string args)
|
||||
@@ -1641,62 +1413,7 @@ namespace CMLeonOS
|
||||
|
||||
public void ProcessBase64Command(string args)
|
||||
{
|
||||
string[] parts = args.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
if (parts.Length == 0)
|
||||
{
|
||||
ShowError("Error: Please specify subcommand");
|
||||
ShowError("Usage: base64 encrypt <text> | base64 decrypt <text>");
|
||||
return;
|
||||
}
|
||||
|
||||
string subcommand = parts[0].ToLower();
|
||||
|
||||
if (subcommand != "encrypt" && subcommand != "decrypt")
|
||||
{
|
||||
ShowError("Error: Invalid subcommand");
|
||||
ShowError("Usage: base64 encrypt <text> | base64 decrypt <text>");
|
||||
return;
|
||||
}
|
||||
|
||||
if (parts.Length < 2)
|
||||
{
|
||||
ShowError("Error: Please specify text to process");
|
||||
ShowError($"Usage: base64 {subcommand} <text>");
|
||||
return;
|
||||
}
|
||||
|
||||
string text = string.Join(" ", parts, 1, parts.Length - 1);
|
||||
|
||||
Console.WriteLine("====================================");
|
||||
Console.WriteLine(" Base64");
|
||||
Console.WriteLine("====================================");
|
||||
Console.WriteLine();
|
||||
|
||||
try
|
||||
{
|
||||
if (subcommand == "encrypt")
|
||||
{
|
||||
string encoded = Base64Helper.Encode(text);
|
||||
Console.WriteLine($"Original: {text}");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine($"Encoded: {encoded}");
|
||||
}
|
||||
if (subcommand == "decrypt")
|
||||
{
|
||||
string decoded = Base64Helper.Decode(text);
|
||||
Console.WriteLine($"Encoded: {text}");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine($"Decoded: {decoded}");
|
||||
}
|
||||
|
||||
Console.WriteLine();
|
||||
ShowSuccess("Base64 operation completed");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowError($"Base64 error: {ex.Message}");
|
||||
}
|
||||
Commands.Utility.Base64Command.ProcessBase64Command(args, ShowError, ShowSuccess);
|
||||
}
|
||||
|
||||
public void ExecuteLuaScript(string args)
|
||||
|
||||
Reference in New Issue
Block a user