public virtual void Execute(Path homeDir, Path configDir, params string[] args) { try { if (args.Length == 0) { BadUsage("you must provide a command"); return; } if (Args.parse(args).has("version")) { _outsideWorld.stdOutLine("neo4j-admin " + neo4jVersion()); Success(); return; } string name = args[0]; string[] commandArgs = Arrays.copyOfRange(args, 1, args.Length); AdminCommand_Provider provider; try { provider = _commandLocator.findProvider(name); foreach (AdminCommand_Blocker blocker in _blockerLocator.findBlockers(name)) { if (blocker.DoesBlock(homeDir, configDir)) { CommandFailed(new CommandFailed(blocker.Explanation())); } } } catch (NoSuchElementException) { BadUsage(format("unrecognized command: %s", name)); return; } if (provider == null) { BadUsage(format("unrecognized command: %s", name)); return; } if (Args.parse(commandArgs).has("help")) { _outsideWorld.stdErrLine("unknown argument: --help"); _usage.printUsageForCommand(provider, _outsideWorld.stdErrLine); Failure(); } else { AdminCommand command = provider.Create(homeDir, configDir, _outsideWorld); try { command.Execute(commandArgs); Success(); } catch (IncorrectUsage e) { BadUsage(provider, e); } catch (CommandFailed e) { CommandFailed(e); } } } catch (Exception e) { Unexpected(e); } }