diff --git a/OrganizeIt.Cli/Options.cs b/OrganizeIt.Cli/Options.cs deleted file mode 100644 index ebfbd63..0000000 --- a/OrganizeIt.Cli/Options.cs +++ /dev/null @@ -1,12 +0,0 @@ -using CommandLine; - -namespace OrganizeIt.Cli; - -public class Options -{ - [Option('c', "config", Required = false, HelpText = "Set the config file")] - public string Config { get; set; } = string.Empty; - - [Option('d', "directory", Required = false, HelpText = "Set the target directory")] - public string Directory { get; set; } = string.Empty; -} \ No newline at end of file diff --git a/OrganizeIt.Cli/OrganizeIt.Cli.csproj b/OrganizeIt.Cli/OrganizeIt.Cli.csproj index 2f5e3de..98e5caa 100644 --- a/OrganizeIt.Cli/OrganizeIt.Cli.csproj +++ b/OrganizeIt.Cli/OrganizeIt.Cli.csproj @@ -7,10 +7,6 @@ enable - - - - Always diff --git a/OrganizeIt.Cli/Program.cs b/OrganizeIt.Cli/Program.cs index 67d564a..2c077e8 100644 --- a/OrganizeIt.Cli/Program.cs +++ b/OrganizeIt.Cli/Program.cs @@ -1,38 +1,71 @@ -using CommandLine; -using OrganizeIt.Cli; -using OrganizeIt.Core; +using OrganizeIt.Core; public static class Program { public static void Main(string[] args) { - Parser.Default.ParseArguments(args) - .WithParsed(o => + string configFileString = ""; + string targetDirectory = ""; + + for (int i = 0; i < args.Length; i++) + { + string arg = args[i]; + if (arg.StartsWith("-c") || arg.StartsWith("--config")) { - Console.WriteLine("Welcome to the OrganizeIt.Cli!"); - FileInfo? configFile = GetConfigFile(o.Config); - if (configFile == null) + if (i + 1 < args.Length) { - Console.WriteLine("Cannot proceed without a valid configuration file."); - Console.ReadKey(); + configFileString = args[i + 1]; + i++; + } + else + { + Console.WriteLine("Error: Missing config file path after -c or --config option."); return; } - Configs? configs = new Configs(); - if (string.IsNullOrEmpty(o.Directory) || o.Directory.Equals(".")) + } + else if (arg.StartsWith("-d") || arg.StartsWith("--directory")) + { + if (i + 1 < args.Length) { - o.Directory = Environment.CurrentDirectory; + targetDirectory = args[i + 1]; + i++; } - Console.WriteLine("Directory to organize: " + o.Directory); - configs = configs.GetConfigs(configFile); - int result = Organizer.Organize(o.Directory, configs); - if (result >= 1) Console.WriteLine("Organizer ran successfully!"); else Console.WriteLine("Organizer failed"); - Console.WriteLine("Press any key to exit..."); - Console.ReadKey(); - return; - }); - - } + else + { + Console.WriteLine("Error: Missing target directory path after -d or --directory option."); + return; + } + } + else + { + Console.WriteLine($"Warning: Unknown argument: {arg}"); + } + } + + Console.WriteLine("Welcome to the OrganizeIt.Cli!"); + FileInfo? configFile = GetConfigFile(configFileString); + if (configFile == null) + { + Console.WriteLine("Cannot proceed without a valid configuration file."); + Console.ReadKey(); + return; + } + + Configs? configs = new Configs(); + if (string.IsNullOrEmpty(targetDirectory) || targetDirectory.Equals(".")) + { + targetDirectory = Environment.CurrentDirectory; + } + Console.WriteLine("Directory to organize: " + targetDirectory); + configs = configs.GetConfigs(configFile); + int result = Organizer.Organize(targetDirectory, configs); + if (result >= 1) Console.WriteLine("Organizer ran successfully!"); else Console.WriteLine("Organizer failed"); + Console.WriteLine("Press any key to exit..."); + Console.ReadKey(); + return; + } + private static FileInfo? GetConfigFile(string? configPath) { string? filePath = string.IsNullOrEmpty(configPath) ? $"{Environment.CurrentDirectory}/config.json" : configPath; diff --git a/Readme.md b/Readme.md index 1e13b45..817b47a 100644 --- a/Readme.md +++ b/Readme.md @@ -84,7 +84,7 @@ The app currently supports organization by extensions. I'm working on making it ```bash > organizeit.cli ``` -- Speciffy the path to the custome config.json using the -c flag +- Speciffy the path to the custom config.json using the -c flag ```bash > organizeit.cli -c path/to/the/custom/config/file ```