/** * Entry point into parsing command line arguments. * @param args the command line arguments * @return a list with all commands and subcommands initialized by this method * @throws ParameterException if the specified command line arguments are invalid */ List<CommandLine> parse(String... args) { Assert.notNull(args, "argument array"); if (tracer.isInfo()) {tracer.info("Picocli version: %s%n", versionString());} if (tracer.isInfo()) {tracer.info("Parsing %d command line args %s%n", args.length, Arrays.toString(args));} if (tracer.isDebug()){tracer.debug("Parser configuration: %s%n", config());} if (tracer.isDebug()){tracer.debug("(ANSI is %s by default: isatty=%s, XTERM=%s, OSTYPE=%s, isWindows=%s, JansiConsoleInstalled=%s, ANSICON=%s, ConEmuANSI=%s, NO_COLOR=%s, CLICOLOR=%s, CLICOLOR_FORCE=%s)%n", Help.Ansi.ansiPossible() ? "enabled" : "disabled", Help.Ansi.isTTY(), System.getenv("XTERM"), System.getenv("OSTYPE"), Help.Ansi.isWindows(), Help.Ansi.isJansiConsoleInstalled(), System.getenv("ANSICON"), System.getenv("ConEmuANSI"), System.getenv("NO_COLOR"), System.getenv("CLICOLOR"), System.getenv("CLICOLOR_FORCE"));} List<String> expanded = new ArrayList<String>(); for (String arg : args) { addOrExpand(arg, expanded, new LinkedHashSet<String>()); } Stack<String> arguments = new Stack<String>(); arguments.addAll(reverseList(expanded)); List<CommandLine> result = new ArrayList<CommandLine>(); parse(result, arguments, args, new ArrayList<Object>()); return result; }
@Test public void testAnsiAutoDisabledIfNoTty() { if (Ansi.isTTY()) { return; } // environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); System.setProperty("os.name", "Windows"); assertTrue(Ansi.isWindows()); assertFalse(Ansi.isPseudoTTY()); assertFalse(Ansi.isJansiConsoleInstalled()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertFalse(Ansi.hintDisabled()); assertFalse(Ansi.hintEnabled()); assertFalse("Must have TTY if no JAnsi", Ansi.AUTO.enabled()); }
@Test public void testAnsiAutoEnabledIfNotWindows() { if (!Ansi.isTTY()) { return; } // needs TTY for this test environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); System.setProperty("os.name", "MMIX"); assertFalse(Ansi.isWindows()); assertFalse(Ansi.isPseudoTTY()); // TODO Mock this? assertFalse(Ansi.isJansiConsoleInstalled()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertFalse(Ansi.hintDisabled()); assertFalse(Ansi.hintEnabled()); assertTrue("If have TTY, enabled on non-Windows", Ansi.AUTO.enabled()); }
/** * Entry point into parsing command line arguments. * @param args the command line arguments * @return a list with all commands and subcommands initialized by this method * @throws ParameterException if the specified command line arguments are invalid */ List<CommandLine> parse(String... args) { Assert.notNull(args, "argument array"); if (tracer.isInfo()) {tracer.info("Picocli version: %s%n", versionString());} if (tracer.isInfo()) {tracer.info("Parsing %d command line args %s%n", args.length, Arrays.toString(args));} if (tracer.isDebug()){tracer.debug("Parser configuration: %s%n", config());} if (tracer.isDebug()){tracer.debug("(ANSI is %s by default: isatty=%s, XTERM=%s, OSTYPE=%s, isWindows=%s, JansiConsoleInstalled=%s, ANSICON=%s, ConEmuANSI=%s, NO_COLOR=%s, CLICOLOR=%s, CLICOLOR_FORCE=%s)%n", Help.Ansi.ansiPossible() ? "enabled" : "disabled", Help.Ansi.isTTY(), System.getenv("XTERM"), System.getenv("OSTYPE"), Help.Ansi.isWindows(), Help.Ansi.isJansiConsoleInstalled(), System.getenv("ANSICON"), System.getenv("ConEmuANSI"), System.getenv("NO_COLOR"), System.getenv("CLICOLOR"), System.getenv("CLICOLOR_FORCE"));} List<String> expanded = new ArrayList<String>(); for (String arg : args) { addOrExpand(arg, expanded, new LinkedHashSet<String>()); } Stack<String> arguments = new Stack<String>(); arguments.addAll(reverseList(expanded)); List<CommandLine> result = new ArrayList<CommandLine>(); parse(result, arguments, args, new ArrayList<Object>()); return result; }
@Test public void testAnsiAutoDisabledIfNoTty() { if (Ansi.isTTY()) { return; } // environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); System.setProperty("os.name", "Windows"); assertTrue(Ansi.isWindows()); assertFalse(Ansi.isPseudoTTY()); assertFalse(Ansi.isJansiConsoleInstalled()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertFalse(Ansi.hintDisabled()); assertFalse(Ansi.hintEnabled()); assertFalse("Must have TTY if no JAnsi", Ansi.AUTO.enabled()); }
@Test public void testAnsiAutoEnabledIfNotWindows() { if (!Ansi.isTTY()) { return; } // needs TTY for this test environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); System.setProperty("os.name", "MMIX"); assertFalse(Ansi.isWindows()); assertFalse(Ansi.isPseudoTTY()); // TODO Mock this? assertFalse(Ansi.isJansiConsoleInstalled()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertFalse(Ansi.hintDisabled()); assertFalse(Ansi.hintEnabled()); assertTrue("If have TTY, enabled on non-Windows", Ansi.AUTO.enabled()); }
static boolean ansiPossible() { if (forceDisabled()) { return false; } if (forceEnabled()) { return true; } if (isJansiConsoleInstalled()) { return true; } if (hintDisabled()) { return false; } if (!isTTY() && !isPseudoTTY()) { return false; } return hintEnabled() || !isWindows() || isXterm() || hasOsType(); } static boolean isJansiConsoleInstalled() {
static boolean ansiPossible() { if (forceDisabled()) { return false; } if (forceEnabled()) { return true; } if (isJansiConsoleInstalled()) { return true; } if (hintDisabled()) { return false; } if (!isTTY() && !isPseudoTTY()) { return false; } return hintEnabled() || !isWindows() || isXterm() || hasOsType(); } static boolean isJansiConsoleInstalled() {