From cb59ed771ada1c7cec4231d959f3cf1f2610f99c Mon Sep 17 00:00:00 2001 From: Valerie Wolfe Date: Wed, 5 Jun 2024 10:19:21 -0400 Subject: [PATCH] initial basic qdls implementation --- qdls/.gitignore | 4 ++++ qdls/Program.cs | 42 ++++++++++++++++++++++++++++++++++++++++++ qdls/qdls.csproj | 10 ++++++++++ 3 files changed, 56 insertions(+) create mode 100644 qdls/.gitignore create mode 100644 qdls/Program.cs create mode 100644 qdls/qdls.csproj diff --git a/qdls/.gitignore b/qdls/.gitignore new file mode 100644 index 0000000..f57e698 --- /dev/null +++ b/qdls/.gitignore @@ -0,0 +1,4 @@ +obj/ +bin/ +.idea/ + diff --git a/qdls/Program.cs b/qdls/Program.cs new file mode 100644 index 0000000..71cbabc --- /dev/null +++ b/qdls/Program.cs @@ -0,0 +1,42 @@ +using System.IO; + +string[] arguments; +if(args.Length == 0) + arguments = ["."]; +else + arguments = args; +foreach(var arg in arguments) { + if(!Path.Exists(arg)) + Console.WriteLine($"'{arg}: does not exist"); + if(File.Exists(arg)) + Console.WriteLine($"'{arg}: is file"); + + var children = Directory.GetFileSystemEntries(arg); + + var line = ""; + var longest = children.OrderByDescending(s => Path.GetFileName(s).Length).First().Length; + var columns = Console.WindowWidth / (longest + 2); + var position = -1; + + if(args.Length > 1) + Console.WriteLine($"{arg}:"); + foreach(var child in children) { + var name = Path.GetFileName(child); + + if( + name.StartsWith('.') || + ( File.GetAttributes(child) & FileAttributes.Hidden ) == FileAttributes.Hidden + ) + continue; + + if(++position >= columns) { + position = -1; + Console.WriteLine(line); + line = ""; + } + line += name + " "; + + } + + Console.WriteLine(line); +} diff --git a/qdls/qdls.csproj b/qdls/qdls.csproj new file mode 100644 index 0000000..206b89a --- /dev/null +++ b/qdls/qdls.csproj @@ -0,0 +1,10 @@ + + + + Exe + net8.0 + enable + enable + + +