View Javadoc

1   package org.springframework.roo.shell;
2   
3   import java.io.File;
4   
5   import org.springframework.roo.shell.event.ShellStatusProvider;
6   
7   /**
8    * Specifies the contract for an interactive shell.
9    * 
10   * <p>
11   * Any interactive shell class which implements these methods can be launched by the roo-bootstrap mechanism.
12   * 
13   * <p>
14   * It is envisaged implementations will be provided for JLine initially, with possible implementations for
15   * Eclipse in the future.
16   * 
17   * @author Ben Alex
18   * @since 1.0
19   *
20   */
21  public interface Shell extends ShellStatusProvider, ShellPromptAccessor {
22  
23  	/**
24  	 * Presents a console prompt and allows the user to interact with the shell. The shell should not return
25  	 * to the caller until the user has finished their session (by way of a "quit" or similar command).
26  	 */
27  	void promptLoop();
28  
29  	/**
30  	 * @return null if no exit was requested, otherwise the last exit code indicated to the shell to use
31  	 */
32  	ExitShellRequest getExitShellRequest();
33  	
34  	/**
35  	 * Runs the specified command. Control will return to the caller after the command is run. 
36  	 * 
37  	 * @param line to execute (required)
38  	 * @return true if the command was successful, false if there was an exception
39  	 */
40  	boolean executeCommand(String line);
41  
42  	/**
43  	 * Indicates the shell should switch into a lower-level development mode. The exact meaning varies by
44  	 * shell implementation.
45  	 * 
46  	 * @param developmentMode true if development mode should be enabled, false otherwise
47  	 */
48  	void setDevelopmentMode(boolean developmentMode);
49  
50  	boolean isDevelopmentMode();
51  	
52  	/**
53  	 * Changes the "path" displayed in the shell prompt. An implementation will ensure this path is
54  	 * included on the screen, taking care to merge it with the product name and handle any special
55  	 * formatting requirements (such as ANSI, if supported by the implementation).
56  	 * 
57  	 * @param path to set (can be null or empty; must NOT be formatted in any special way eg ANSI codes)
58  	 */
59  	void setPromptPath(String path);
60  	
61  	/**
62  	 * Returns the home directory of the current running shell instance 
63       *	
64  	 * @return the home directory of the current shell instance
65  	 */
66  	File getHome();
67  }