Class SystemRegistryImpl

    • Field Detail

      • BUILTIN_REGISTRIES

        private static final java.lang.Class<?>[] BUILTIN_REGISTRIES
      • consoleId

        private java.lang.Integer consoleId
      • parser

        protected final Parser parser
      • workDir

        protected final java.util.function.Supplier<java.nio.file.Path> workDir
      • subcommands

        private final java.util.Map<java.lang.String,​CommandRegistry> subcommands
      • commandExecute

        private final java.util.Map<java.lang.String,​CommandMethods> commandExecute
      • commandInfos

        private final java.util.Map<java.lang.String,​java.util.List<java.lang.String>> commandInfos
      • exception

        private java.lang.Exception exception
      • customSystemCompleter

        private final SystemCompleter customSystemCompleter
      • commandGroups

        private boolean commandGroups
      • scriptDescription

        private java.util.function.Function<CmdLine,​CmdDesc> scriptDescription
    • Constructor Detail

      • SystemRegistryImpl

        public SystemRegistryImpl​(Parser parser,
                                  Terminal terminal,
                                  java.util.function.Supplier<java.nio.file.Path> workDir,
                                  ConfigurationPath configPath)
    • Method Detail

      • getPipeNames

        public java.util.Collection<java.lang.String> getPipeNames()
        Specified by:
        getPipeNames in interface SystemRegistry
        Returns:
        pipe names defined in systemRegistry
      • initialize

        public void initialize​(java.io.File script)
        Description copied from interface: SystemRegistry
        Initialize consoleEngine environment by executing console script
        Specified by:
        initialize in interface SystemRegistry
        Parameters:
        script - initialization script
      • commandNames

        public java.util.Set<java.lang.String> commandNames()
        Description copied from interface: CommandRegistry
        Returns the command names known by this registry.
        Specified by:
        commandNames in interface CommandRegistry
        Returns:
        the set of known command names, excluding aliases
      • localCommandNames

        private java.util.Set<java.lang.String> localCommandNames()
      • commandAliases

        public java.util.Map<java.lang.String,​java.lang.String> commandAliases()
        Description copied from interface: CommandRegistry
        Returns a map of alias-to-command names known by this registry.
        Specified by:
        commandAliases in interface CommandRegistry
        Returns:
        a map with alias keys and command name values
      • consoleOption

        public <T> T consoleOption​(java.lang.String name,
                                   T defVal)
        Description copied from interface: SystemRegistry
        Return console option value
        Specified by:
        consoleOption in interface ConsoleOptionGetter
        Specified by:
        consoleOption in interface SystemRegistry
        Type Parameters:
        T - option type
        Parameters:
        name - the option name
        defVal - value to return if console option does not exists
        Returns:
        option value
      • setConsoleOption

        public void setConsoleOption​(java.lang.String name,
                                     java.lang.Object value)
        Description copied from interface: SystemRegistry
        Set console option value
        Specified by:
        setConsoleOption in interface SystemRegistry
        Parameters:
        name - the option name
        value - value to assign console option
      • register

        public void register​(java.lang.String command,
                             CommandRegistry subcommandRegistry)
        Register subcommand registry
        Specified by:
        register in interface SystemRegistry
        Parameters:
        command - main command
        subcommandRegistry - subcommand registry
      • localCommandInfo

        private java.util.List<java.lang.String> localCommandInfo​(java.lang.String command)
      • commandInfo

        public java.util.List<java.lang.String> commandInfo​(java.lang.String command)
        Description copied from interface: CommandRegistry
        Returns a short info about command known by this registry.
        Specified by:
        commandInfo in interface CommandRegistry
        Parameters:
        command - the command name
        Returns:
        a short info about command
      • hasCommand

        public boolean hasCommand​(java.lang.String command)
        Description copied from interface: CommandRegistry
        Returns whether a command with the specified name is known to this registry.
        Specified by:
        hasCommand in interface CommandRegistry
        Parameters:
        command - the command name to test
        Returns:
        true if the specified command is registered
      • setGroupCommandsInHelp

        public void setGroupCommandsInHelp​(boolean commandGroups)
      • groupCommandsInHelp

        public SystemRegistryImpl groupCommandsInHelp​(boolean commandGroups)
      • isLocalCommand

        private boolean isLocalCommand​(java.lang.String command)
      • isCommandOrScript

        public boolean isCommandOrScript​(ParsedLine line)
        Description copied from interface: SystemRegistry
        Returns whether a line contains command/script that is known to this registry.
        Specified by:
        isCommandOrScript in interface SystemRegistry
        Parameters:
        line - the parsed command line to test
        Returns:
        true if the specified line has a command registered
      • isCommandOrScript

        public boolean isCommandOrScript​(java.lang.String command)
        Description copied from interface: SystemRegistry
        Returns whether command is known to this registry.
        Specified by:
        isCommandOrScript in interface SystemRegistry
        Parameters:
        command - the command to test
        Returns:
        true if the specified command is known
      • addCompleter

        public void addCompleter​(Completer completer)
      • compileCompleters

        public SystemCompleter compileCompleters()
        Description copied from interface: CommandRegistry
        Returns a SystemCompleter that can provide detailed completion information for all registered commands.
        Specified by:
        compileCompleters in interface CommandRegistry
        Returns:
        a SystemCompleter that can provide command completion for all registered commands
      • completer

        public Completer completer()
        Description copied from interface: SystemRegistry
        Returns command completer that includes also console variable and script completion.
        Specified by:
        completer in interface SystemRegistry
        Returns:
        command completer
      • localCommandDescription

        private CmdDesc localCommandDescription​(java.lang.String command)
      • commandDescription

        public CmdDesc commandDescription​(java.util.List<java.lang.String> args)
        Description copied from interface: CommandRegistry
        Returns a command description for use in the JLine Widgets framework. Default method must be overridden to return sub command descriptions.
        Specified by:
        commandDescription in interface CommandRegistry
        Parameters:
        args - command (args[0]) and its arguments
        Returns:
        command description for JLine TailTipWidgets to be displayed in the terminal status bar.
      • setScriptDescription

        public void setScriptDescription​(java.util.function.Function<CmdLine,​CmdDesc> scriptDescription)
      • commandDescription

        public CmdDesc commandDescription​(CmdLine line)
        Description copied from interface: SystemRegistry
        Returns a command, method or syntax description for use in the JLine Widgets framework.
        Specified by:
        commandDescription in interface SystemRegistry
        Parameters:
        line - command line whose description to return
        Returns:
        command description for JLine TailTipWidgets to be displayed in the terminal status bar.
      • invoke

        public java.lang.Object invoke​(java.lang.String command,
                                       java.lang.Object... args)
                                throws java.lang.Exception
        Description copied from interface: SystemRegistry
        Execute command with arguments
        Specified by:
        invoke in interface SystemRegistry
        Parameters:
        command - command to be executed
        args - arguments of the command
        Returns:
        command execution result
        Throws:
        java.lang.Exception - in case of error
      • localExecute

        private java.lang.Object localExecute​(java.lang.String command,
                                              java.lang.Object[] args)
                                       throws java.lang.Exception
        Throws:
        java.lang.Exception
      • isCommandAlias

        public boolean isCommandAlias​(java.lang.String command)
        Description copied from interface: SystemRegistry
        Returns whether alias is known command alias.
        Specified by:
        isCommandAlias in interface SystemRegistry
        Parameters:
        command - the alias to test
        Returns:
        true if the alias is known command alias
      • replaceCommandAlias

        private java.lang.String replaceCommandAlias​(java.lang.String variable,
                                                     java.lang.String command,
                                                     java.lang.String rawLine)
      • replacePipeAlias

        private java.lang.String replacePipeAlias​(SystemRegistryImpl.ArgsParser ap,
                                                  java.lang.String pipeAlias,
                                                  java.util.List<java.lang.String> args,
                                                  java.util.Map<java.lang.String,​java.util.List<java.lang.String>> customPipes)
      • redirectFile

        private java.io.File redirectFile​(java.lang.String name)
      • flipArgument

        private java.lang.String flipArgument​(java.lang.String command,
                                              java.lang.String subLine,
                                              java.util.List<java.lang.String> pipes,
                                              java.util.List<java.lang.String> arglist)
      • execute

        private java.lang.Object execute​(java.lang.String command,
                                         java.lang.String rawLine,
                                         java.lang.String[] args)
                                  throws java.lang.Exception
        Throws:
        java.lang.Exception
      • execute

        public java.lang.Object execute​(java.lang.String line)
                                 throws java.lang.Exception
        Description copied from interface: SystemRegistry
        Execute a command, script or evaluate scriptEngine statement
        Specified by:
        execute in interface SystemRegistry
        Parameters:
        line - command line to be executed
        Returns:
        execution result
        Throws:
        java.lang.Exception - in case of error
      • cleanUp

        public void cleanUp()
        Description copied from interface: SystemRegistry
        Delete temporary console variables and reset output streams
        Specified by:
        cleanUp in interface SystemRegistry
      • trace

        public void trace​(java.lang.Throwable exception)
        Description copied from interface: SystemRegistry
        Print exception on terminal
        Specified by:
        trace in interface SystemRegistry
        Parameters:
        exception - exception to print on terminal
      • trace

        public void trace​(boolean stack,
                          java.lang.Throwable exception)
        Description copied from interface: SystemRegistry
        Print exception on terminal
        Specified by:
        trace in interface SystemRegistry
        Parameters:
        stack - print stack trace if stack true otherwise message
        exception - exception to be printed
      • isBuiltinRegistry

        private boolean isBuiltinRegistry​(CommandRegistry registry)
      • printHeader

        private void printHeader​(java.lang.String header)
      • printCommandInfo

        private void printCommandInfo​(java.lang.String command,
                                      java.lang.String info,
                                      int max)
      • printCommands

        private void printCommands​(java.util.Collection<java.lang.String> commands,
                                   int max)
      • doCommandInfo

        private java.lang.String doCommandInfo​(java.util.List<java.lang.String> info)
      • isInTopics

        private boolean isInTopics​(java.util.List<java.lang.String> args,
                                   java.lang.String name)
      • help

        private java.lang.Object help​(CommandInput input)
      • helpTopic

        private void helpTopic​(java.util.List<java.lang.String> topics,
                               boolean commandGroups,
                               boolean info)
      • exit

        private java.lang.Object exit​(CommandInput input)
      • registryHelp

        private void registryHelp​(CommandRegistry registry)
                           throws java.lang.Exception
        Throws:
        java.lang.Exception
      • subcommand

        private java.lang.Object subcommand​(CommandInput input)
      • commandOptions

        private java.util.List<Completers.OptDesc> commandOptions​(java.lang.String command)
      • registryNames

        private java.util.List<java.lang.String> registryNames()
      • emptyCompleter

        private java.util.List<Completer> emptyCompleter​(java.lang.String command)
      • helpCompleter

        private java.util.List<Completer> helpCompleter​(java.lang.String command)
      • exitCompleter

        private java.util.List<Completer> exitCompleter​(java.lang.String command)
      • registryId

        private int registryId​(java.lang.String command)