1. import java.util.HashMap;
  2. import java.util.Map;
  3. import java.util.Scanner;
  4. public class CLIArgParser {
  5. public static void main(String[] args) {
  6. // Define default values for arguments
  7. Map<String, Object> defaults = new HashMap<>();
  8. defaults.put("name", "World");
  9. defaults.put("age", 0);
  10. defaults.put("city", "Unknown");
  11. defaults.put("debug", false);
  12. // Parse command line arguments
  13. Map<String, Object> parsedArgs = parseArgs(args, defaults);
  14. // Access and print the parsed arguments
  15. System.out.println("Name: " + parsedArgs.get("name"));
  16. System.out.println("Age: " + parsedArgs.get("age"));
  17. System.out.println("City: " + parsedArgs.get("city"));
  18. System.out.println("Debug: " + parsedArgs.get("debug"));
  19. }
  20. public static Map<String, Object> parseArgs(String[] args, Map<String, Object> defaults) {
  21. Map<String, Object> parsedArgs = new HashMap<>(defaults); // Start with default values
  22. Scanner scanner = new Scanner(System.in);
  23. String arg;
  24. while ((arg = scanner.nextLine()) != null) {
  25. String[] parts = arg.split("=");
  26. if (parts.length == 2) {
  27. String key = parts[0].trim();
  28. String value = parts[1].trim();
  29. if (parsedArgs.containsKey(key)) {
  30. try {
  31. // Attempt to parse value to appropriate type
  32. Object parsedValue = parseValue(value);
  33. parsedArgs.put(key, parsedValue);
  34. } catch (Exception e) {
  35. System.err.println("Error parsing value for " + key + ": " + value);
  36. // Keep default value
  37. }
  38. } else {
  39. parsedArgs.put(key, value);
  40. }
  41. } else if (arg.trim().equalsIgnoreCase("--help")) {
  42. printHelp();
  43. return parsedArgs; // Exit after printing help
  44. }
  45. }
  46. return parsedArgs;
  47. }
  48. private static Object parseValue(String value) {
  49. if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("1")) {
  50. return true;
  51. } else if (value.equalsIgnoreCase("false") || value.equalsIgnoreCase("0")) {
  52. return false;
  53. } else {
  54. try {
  55. return Integer.parseInt(value);
  56. } catch (NumberFormatException e) {
  57. try {
  58. return Double.parseDouble(value);
  59. } catch (NumberFormatException e2) {
  60. return value; // Treat as string
  61. }
  62. }
  63. }
  64. }
  65. private static void printHelp() {
  66. System.out.println("Usage: CLIArgParser [options]");
  67. System.out.println("Options:");
  68. System.out.println(" --help Display this help message");
  69. System.out.println(" --name Specify a name (default: World)");
  70. System.out.println(" --age Specify an age (default: 0)");
  71. System.out.println(" --city Specify a city (default: Unknown)");
  72. System.out.println(" --debug Enable debug mode (default: false)");
  73. }
  74. }

Add your comment