import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class CLIArgParser {
public static void main(String[] args) {
// Define default values for arguments
Map<String, Object> defaults = new HashMap<>();
defaults.put("name", "World");
defaults.put("age", 0);
defaults.put("city", "Unknown");
defaults.put("debug", false);
// Parse command line arguments
Map<String, Object> parsedArgs = parseArgs(args, defaults);
// Access and print the parsed arguments
System.out.println("Name: " + parsedArgs.get("name"));
System.out.println("Age: " + parsedArgs.get("age"));
System.out.println("City: " + parsedArgs.get("city"));
System.out.println("Debug: " + parsedArgs.get("debug"));
}
public static Map<String, Object> parseArgs(String[] args, Map<String, Object> defaults) {
Map<String, Object> parsedArgs = new HashMap<>(defaults); // Start with default values
Scanner scanner = new Scanner(System.in);
String arg;
while ((arg = scanner.nextLine()) != null) {
String[] parts = arg.split("=");
if (parts.length == 2) {
String key = parts[0].trim();
String value = parts[1].trim();
if (parsedArgs.containsKey(key)) {
try {
// Attempt to parse value to appropriate type
Object parsedValue = parseValue(value);
parsedArgs.put(key, parsedValue);
} catch (Exception e) {
System.err.println("Error parsing value for " + key + ": " + value);
// Keep default value
}
} else {
parsedArgs.put(key, value);
}
} else if (arg.trim().equalsIgnoreCase("--help")) {
printHelp();
return parsedArgs; // Exit after printing help
}
}
return parsedArgs;
}
private static Object parseValue(String value) {
if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("1")) {
return true;
} else if (value.equalsIgnoreCase("false") || value.equalsIgnoreCase("0")) {
return false;
} else {
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
try {
return Double.parseDouble(value);
} catch (NumberFormatException e2) {
return value; // Treat as string
}
}
}
}
private static void printHelp() {
System.out.println("Usage: CLIArgParser [options]");
System.out.println("Options:");
System.out.println(" --help Display this help message");
System.out.println(" --name Specify a name (default: World)");
System.out.println(" --age Specify an age (default: 0)");
System.out.println(" --city Specify a city (default: Unknown)");
System.out.println(" --debug Enable debug mode (default: false)");
}
}
Add your comment