From 745895d5538010b5b1fbd07eac0b05d69cb89104 Mon Sep 17 00:00:00 2001 From: Rob Greene Date: Wed, 25 Oct 2023 18:51:35 -0500 Subject: [PATCH] Updating error message on number conversion to remind uses that Unix shell quoting can come into play. #91 --- .../acx/converter/IntegerTypeConverter.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/app/cli-acx/src/main/java/io/github/applecommander/acx/converter/IntegerTypeConverter.java b/app/cli-acx/src/main/java/io/github/applecommander/acx/converter/IntegerTypeConverter.java index 347a2a3..dcd2273 100644 --- a/app/cli-acx/src/main/java/io/github/applecommander/acx/converter/IntegerTypeConverter.java +++ b/app/cli-acx/src/main/java/io/github/applecommander/acx/converter/IntegerTypeConverter.java @@ -19,20 +19,29 @@ */ package io.github.applecommander.acx.converter; +import com.webcodepro.applecommander.util.Host; import picocli.CommandLine.ITypeConverter; /** Add support for "$801" and "0x801" instead of just decimal like 2049. */ public class IntegerTypeConverter implements ITypeConverter { @Override public Integer convert(String value) { - if (value == null) { - return null; - } else if (value.startsWith("$")) { - return Integer.valueOf(value.substring(1), 16); - } else if (value.startsWith("0x") || value.startsWith("0X")) { - return Integer.valueOf(value.substring(2), 16); - } else { - return Integer.valueOf(value); + try { + if (value == null) { + return null; + } else if (value.startsWith("$")) { + return Integer.valueOf(value.substring(1), 16); + } else if (value.startsWith("0x") || value.startsWith("0X")) { + return Integer.valueOf(value.substring(2), 16); + } else { + return Integer.valueOf(value); + } + } catch (NumberFormatException ex) { + String msg = ex.getMessage(); + if (Host.isLinux() || Host.isMacosx()) { + msg += " (check shell quoting if using '$')"; + } + throw new NumberFormatException(msg); } } } \ No newline at end of file