Interface ICliSession

All Known Implementing Classes:
CliSessionImpl

public interface ICliSession
Session information and special functions. To get an instance of this interface, just declare a parameter of this type in you command's method:
  • Method Details

    • criticalSection

      <T> T criticalSection(Callable<T> task) throws Exception
      Runs code in a critical section. Command execution will not be terminated by timeout while inside of a critical section. The timeout restarts when the execution leaves the critical section.
      Type Parameters:
      T - critical section return type.
      Parameters:
      task - task to run in a critical section. It will run in the same thread.
      Returns:
      return value of the task.
      Throws:
      Exception - if the task throws exception, it will be thrown from this method.
      See Also:
    • criticalSection

      void criticalSection(Runnable task)
      Runs code in a critical section. Command execution will not be terminated by timeout while inside of a critical section. The timeout restarts when the execution leaves the critical section.
      Parameters:
      task - task to run in a critical section. It will run in the same thread.
      Throws:
      RuntimeException - if the task throws exception, it will be thrown from this method.
      See Also:
    • readLine

      String readLine(String printMessage) throws IOException
      Reads a line of user input from the console:
           String userName = session.readLine("Please enter your name: ");
           ...
       

      This method prints the optional message to console and blocks until the user presses Enter. Then it returns the line user entered. This method does not count to the command's timeout. Do not wrap it in criticalSection(Callable).

      Parameters:
      printMessage - optional message to print to the user before waiting for their input. May be null.
      Returns:
      A String containing the contents of the line user entered, not including any line-termination characters. May be null, if the end of the console stream has been reached without reading any characters.
      Throws:
      IOException
    • getVariable

      Object getVariable(String name)
      Get the value of a variable.
      Parameters:
      name - name of the variable.
      Returns:
      variable value, or null.
    • getVariable

      <T> T getVariable(String name, Class<T> clazz)
      Get the value of a variable casted to the given class.
      Type Parameters:
      T - class to cast to.
      Parameters:
      name - name of the variable.
      clazz - class to cast to.
      Returns:
      variable value, or null.
      Throws:
      CliCommandException - if failed to cast.
    • getVariables

      Set<String> getVariables()
      Returns all variable names.
      Returns:
      variable names, never null.
    • putVariable

      Object putVariable(String name, Object value)
      Set the value of a variable.
      Parameters:
      name - name of the variable.
      value - value of the variable. Use null to delete variable.
      Returns:
      previous value of the variable, or null.
    • getCommandLine

      String getCommandLine()
      Returns the unparsed command line which is being executed now.
      Returns:
      command line, never null.
    • getCommandName

      String getCommandName()
      Returns the name of the command being executed.
      Returns:
      command name, never null.
    • getRawCommandArguments

      Map<String,Object> getRawCommandArguments()
      Returns the raw (unprocessed) arguments of the command being executed. The types of them may differ from what the command method received.
      Returns:
      map of raw (unprocessed) arguments of the command being executed, never null. Keys are the command line keys of the arguments, values are the raw (unprocessed) values. For keyless (positional) argument (if any), the empty string is used for the key.
    • getCurrentWorkDir

      Path getCurrentWorkDir()
      Returns the current session's working directory. You should resolve all relative paths against this directory (except for workspace relative paths).

      This is not the workspace directory. Initially this value is set to be the directory the 1C:EDT CLI process is executed from. But the user (or other commands) can change it later for each session separately either by calling the builtin cd command, or by changing the _cwd session variable.

      Because of this you should not rely on the JVM process working directory (System.getProperty("user.dir") or File.getAbsolutePath() or other methods like this).

      Returns:
      the current working directory of the current session. Never null.
      See Also:
    • setCurrentWorkDir

      void setCurrentWorkDir(Path path)
      Sets the new current working directory for this session.

      Internally this is done by setting the _cwd session variable. See getCurrentWorkDir() for the details about what the current session's working directory is and how to use it.

      Parameters:
      path - new current working dir, cannot be null. Must be absolute.
      See Also:
    • getCurrentNamespace

      String getCurrentNamespace()
      Returns the current namespace for this session.
      Returns:
      the current namespace, never null.
    • setCurrentNamespace

      void setCurrentNamespace(String namespace)
      Sets the new current namespace for this session.

      Internally this is done by setting the SCOPE session variable.

      Parameters:
      namespace - new namespace, cannot be null.
      See Also:
    • getLastCommandException

      Throwable getLastCommandException()
      Returns exception of the last executed command.
      Returns:
      exception of the last executed command, may be null.
    • getLastCommandResult

      Object getLastCommandResult()
      Returns result of the last executed command.
      Returns:
      result of the last executed command, may be null.