Implemented ListCommand and DeleteAllCommand.
This commit is contained in:
@@ -0,0 +1,55 @@
|
|||||||
|
using TBDel.Services;
|
||||||
|
|
||||||
|
namespace TBDel.Commands;
|
||||||
|
|
||||||
|
public class DeleteCommand
|
||||||
|
{
|
||||||
|
public static async Task DeleteAll()
|
||||||
|
{
|
||||||
|
var dbService = new DbService();
|
||||||
|
var allFiles = await dbService.GetFileEntriesAsync();
|
||||||
|
var allFolders = await dbService.GetFolderEntriesAsync();
|
||||||
|
|
||||||
|
if (allFiles.Count == 0 && allFolders.Count == 0)
|
||||||
|
{
|
||||||
|
Console.WriteLine("No files or folders found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.ForegroundColor = ConsoleColor.Yellow;
|
||||||
|
Console.WriteLine($"Are you sure you want to permanently delete {allFiles.Count} file(s) and {allFolders.Count} folder(s)? (y/N)");
|
||||||
|
Console.ResetColor();
|
||||||
|
var input = Console.ReadLine();
|
||||||
|
if (input != "y")
|
||||||
|
{
|
||||||
|
Console.ForegroundColor = ConsoleColor.Red;
|
||||||
|
Console.WriteLine("Operation cancelled.");
|
||||||
|
Console.ResetColor();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var toBeDeletedFiles = new List<string>();
|
||||||
|
var toBeDeletedFolders = new List<string>();
|
||||||
|
foreach (var file in allFiles)
|
||||||
|
{
|
||||||
|
toBeDeletedFiles.Add(file.Path);
|
||||||
|
}
|
||||||
|
foreach (var folder in allFolders)
|
||||||
|
{
|
||||||
|
toBeDeletedFolders.Add(folder.Path);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var file in toBeDeletedFiles)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Deleting file: {file}");
|
||||||
|
File.Delete(file);
|
||||||
|
await dbService.RemoveFileEntryAsync(file);
|
||||||
|
}
|
||||||
|
foreach (var folder in toBeDeletedFolders)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Deleting directory: {folder}");
|
||||||
|
Directory.Delete(folder, true);
|
||||||
|
await dbService.RemoveFolderEntryAsync(folder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,77 @@
|
|||||||
|
using TBDel.Models;
|
||||||
|
using TBDel.Services;
|
||||||
|
|
||||||
|
namespace TBDel.Commands;
|
||||||
|
|
||||||
|
public class ListCommand
|
||||||
|
{
|
||||||
|
public static async Task List(string[] args)
|
||||||
|
{
|
||||||
|
if (args.Length > 2)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Too many arguments.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (args.Length == 1)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Listing both files and folders.");
|
||||||
|
await ListFiles();
|
||||||
|
for (int i = 0; i < 110; i++)
|
||||||
|
{
|
||||||
|
Console.Write("-");
|
||||||
|
}
|
||||||
|
Console.Write("\n");
|
||||||
|
await ListFolders();
|
||||||
|
}
|
||||||
|
else if (args[1] == "files")
|
||||||
|
{
|
||||||
|
await ListFiles();
|
||||||
|
}
|
||||||
|
else if (args[1] == "folders")
|
||||||
|
{
|
||||||
|
await ListFolders();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static async Task ListFiles()
|
||||||
|
{
|
||||||
|
var dbService = new DbService();
|
||||||
|
var filesList = await dbService.GetFileEntriesAsync();
|
||||||
|
|
||||||
|
if (filesList.Count == 0)
|
||||||
|
{
|
||||||
|
Console.WriteLine("No files found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.ForegroundColor = ConsoleColor.Green;
|
||||||
|
Console.WriteLine("Found {0} file(s):\n", filesList.Count);
|
||||||
|
Console.WriteLine("{0,-100} {1,10}\n", "Path", "Date added");
|
||||||
|
Console.ResetColor();
|
||||||
|
foreach (var file in filesList)
|
||||||
|
{
|
||||||
|
Console.WriteLine("{0,-100} {1,10}", file.Path, file.DateAdded);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private static async Task ListFolders()
|
||||||
|
{
|
||||||
|
var dbService = new DbService();
|
||||||
|
var foldersList = await dbService.GetFolderEntriesAsync();
|
||||||
|
|
||||||
|
if (foldersList.Count == 0)
|
||||||
|
{
|
||||||
|
Console.WriteLine("No folders found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.ForegroundColor = ConsoleColor.Green;
|
||||||
|
Console.WriteLine("Found {0} folder(s):\n", foldersList.Count);
|
||||||
|
Console.WriteLine("{0,-100} {1,10}\n", "Path", "Date added");
|
||||||
|
Console.ResetColor();
|
||||||
|
foreach (var folder in foldersList)
|
||||||
|
{
|
||||||
|
Console.WriteLine("{0,-100} {1,10}", folder.Path, folder.DateAdded);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -5,6 +5,7 @@ namespace TBDel
|
|||||||
internal class Program
|
internal class Program
|
||||||
{
|
{
|
||||||
// TODO: Add a command to show the Db path
|
// TODO: Add a command to show the Db path
|
||||||
|
// TODO: Add a command to remove a file or folder only from the list
|
||||||
static async Task Main(string[] args)
|
static async Task Main(string[] args)
|
||||||
{
|
{
|
||||||
// Show the help message if no arguments are provided
|
// Show the help message if no arguments are provided
|
||||||
@@ -25,10 +26,10 @@ namespace TBDel
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case "deleteall":
|
case "deleteall":
|
||||||
|
await DeleteCommand.DeleteAll();
|
||||||
break;
|
break;
|
||||||
case "list":
|
case "list":
|
||||||
|
await ListCommand.List(args);
|
||||||
break;
|
break;
|
||||||
case "help":
|
case "help":
|
||||||
HelpCommand.Show();
|
HelpCommand.Show();
|
||||||
|
61
TUIHelper/Header.cs
Normal file
61
TUIHelper/Header.cs
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
namespace TBDel.TUIHelper;
|
||||||
|
|
||||||
|
public class Header
|
||||||
|
{
|
||||||
|
public static void Show(String _headerText)
|
||||||
|
{
|
||||||
|
// Get third of the terminal width
|
||||||
|
int viewWidth = Console.WindowWidth/3;
|
||||||
|
|
||||||
|
// Show the header seperator
|
||||||
|
Console.Write("#");
|
||||||
|
for (int i = 0; i <= viewWidth-2; i++)
|
||||||
|
{
|
||||||
|
Console.Write("=");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Move to the next line
|
||||||
|
Console.WriteLine("#");
|
||||||
|
|
||||||
|
Console.Write("#");
|
||||||
|
|
||||||
|
for (int i = 0; i <= viewWidth - 2;i++)
|
||||||
|
{
|
||||||
|
Console.Write(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.Write("#");
|
||||||
|
Console.Write("\n#");
|
||||||
|
|
||||||
|
int textReletiveStartPosition = ((viewWidth - 2)- _headerText.Length)/2;
|
||||||
|
|
||||||
|
for (int i = 0; i < textReletiveStartPosition; i++)
|
||||||
|
{
|
||||||
|
Console.Write(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.Write(_headerText);
|
||||||
|
|
||||||
|
for (int i = 0; i <= textReletiveStartPosition; i++)
|
||||||
|
{
|
||||||
|
Console.Write(" ");
|
||||||
|
}
|
||||||
|
Console.WriteLine("#");
|
||||||
|
Console.Write("#");
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i <= viewWidth - 2;i++)
|
||||||
|
{
|
||||||
|
Console.Write(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.Write("#");
|
||||||
|
Console.Write("\n#");
|
||||||
|
|
||||||
|
for (int i = 0; i <= viewWidth-2; i++)
|
||||||
|
{
|
||||||
|
Console.Write("=");
|
||||||
|
}
|
||||||
|
Console.WriteLine("#");
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user