MetaforceInstaller/MetaforceInstaller.Cli/Program.cs

104 lines
No EOL
4.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using MetaforceInstaller.Cli.Utils;
using MetaforceInstaller.Core.Services;
namespace MetaforceInstaller.Cli;
static class Program
{
static void Main(string[] args)
{
try
{
var installationRequest = ArgumentParser.ParseArguments(args);
if (installationRequest is null ||
string.IsNullOrEmpty(installationRequest.ApkPath) ||
string.IsNullOrEmpty(installationRequest.ZipPath) ||
string.IsNullOrEmpty(installationRequest.OutputPath))
{
ShowUsage();
return;
}
var adbService = new AdbService();
adbService.InstallApk(installationRequest.ApkPath);
adbService.CopyFile(installationRequest.ZipPath, installationRequest.OutputPath);
// var adbPath = ExtractAdbFiles();
//
// var server = new AdbServer();
// var result = server.StartServer(adbPath, restartServerIfNewer: false);
// Console.WriteLine($"ADB сервер запущен: {result}");
//
// adbClient = new AdbClient();
//
// var devices = adbClient.GetDevices();
//
// if (!devices.Any())
// {
// Console.WriteLine("Устройства не найдены. Подключите Android-устройство и включите отладку по USB.");
// return;
// }
//
// deviceData = devices.FirstOrDefault();
// Console.WriteLine($"Найдено устройство: {deviceData.Serial}");
// Console.WriteLine($"Состояние: {deviceData.State}");
// Console.WriteLine($"Имя устройства: {deviceData.Name} - {deviceData.Model}");
//
// InstallApk(installationRequest.ApkPath);
// CopyFileToDevice(installationRequest.ZipPath, installationRequest.OutputPath);
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка: {ex.Message}");
}
}
static void ShowUsage()
{
Console.WriteLine("Использование:");
Console.WriteLine(
" MetaforceInstaller.exe --apk <путь_к_apk> --content <путь_к_zip> --output <путь_для контента>");
Console.WriteLine(" MetaforceInstaller.exe -a <путь_к_apk> -c <путь_к_zip> -o <путь_для_контента>");
Console.WriteLine();
Console.WriteLine("Параметры:");
Console.WriteLine(" --apk, -a Путь к APK файлу");
Console.WriteLine(" --content, -c Путь к ZIP файлу с контентом");
Console.WriteLine(" --output, -o Путь для копирования контента");
Console.WriteLine(" --help, -h Показать эту справку");
Console.WriteLine();
Console.WriteLine("Пример:");
Console.WriteLine(
" MetaforceInstaller.exe --apk \"C:\\app.apk\" --content \"C:\\data.zip\" --output \"/sdcard/data.zip\"");
Console.WriteLine(" MetaforceInstaller.exe -a app.apk -c data.zip -o /sdcard/data.zip");
}
private static void DrawProgressBar(int progress, long receivedBytes, long totalBytes)
{
Console.SetCursorPosition(0, Console.CursorTop);
var barLength = 40;
var filledLength = (int)(barLength * progress / 100.0);
var bar = "[" + new string('█', filledLength) + new string('░', barLength - filledLength) + "]";
var bytesText = $" {FormatBytes(receivedBytes)} / {FormatBytes(totalBytes)}";
Console.Write($"\r{bar} {progress}%{bytesText}");
}
private static string FormatBytes(long bytes)
{
string[] suffixes = ["B", "KB", "MB", "GB", "TB"];
var counter = 0;
double number = bytes;
while (Math.Round(number / 1024) >= 1)
{
number /= 1024;
counter++;
}
return $"{number:N1} {suffixes[counter]}";
}
}