|
13 | 13 | # See the License for the specific language governing permissions and |
14 | 14 | # limitations under the License. |
15 | 15 |
|
16 | | -import argparse |
| 16 | +"""RIDE -- Robot Framework test data editor |
| 17 | +
|
| 18 | +Usage: ride.py [--noupdatecheck] [--debugconsole] [--settingspath <full path|settings filename>] [--version] [inpath] |
| 19 | +
|
| 20 | +RIDE can be started either without any arguments or by giving a path to a test |
| 21 | +data file or directory to be opened. |
| 22 | +
|
| 23 | +To disable update checker use --noupdatecheck. |
| 24 | +
|
| 25 | +To start debug console for RIDE problem debugging use --debugconsole option. |
| 26 | +
|
| 27 | +To use different settings use the option --settingspath followed by the path to the settings file or file name. |
| 28 | +
|
| 29 | +To see RIDE's version use --version. |
| 30 | +
|
| 31 | +RIDE's API is still evolving while the project is moving towards the 1.0 |
| 32 | +release. The most stable, and best documented, module is `robotide.pluginapi`. |
| 33 | +""" |
| 34 | + |
17 | 35 | import os |
18 | 36 | import sys |
| 37 | +from string import Template |
19 | 38 |
|
20 | | -try: |
21 | | - from robotide import version |
22 | | -except ImportError: |
23 | | - print("Error getting RIDE version!") |
24 | | - sys.exit(1) |
25 | | - |
26 | | -errorMessage = """wxPython not found.\n |
27 | | -RIDE depends on wx (wxPython). Known versions for Python3 are: 4.0.7.post2, 4.1.1 and 4.2.3.\ |
28 | | -At the time of this release the current wxPython version is 4.2.3.\ |
| 39 | +errorMessageTemplate = Template("""$reason |
| 40 | +RIDE depends on wx (wxPython). Known versions for Python3 are: 4.0.7.post2, 4.1.1 and 4.2.1.\ |
| 41 | +At the time of this release the current wxPython version is 4.2.1.\ |
29 | 42 | You can install with 'pip install wxPython' on most operating systems, or find the \ |
30 | | -the download link from https://wxPython.org/""" |
31 | | - |
32 | | -if __name__ == '__main__' and 'robotide' not in sys.modules: |
33 | | - from pathlib import Path |
34 | | - robotide_dir = Path(__file__).absolute().parent # zipsafe |
35 | | - sys.path = [str(robotide_dir.parent)] + [p for p in sys.path if Path(p) != robotide_dir] |
36 | | - |
37 | | -parser = argparse.ArgumentParser(prog='ride', description='RIDE is an IDE for Robot Framework test cases and tasks.', |
38 | | - epilog='See information about Robot Framework ecosystem at https://robotframewok.org/', |
39 | | - add_help=False) |
40 | | -parser.add_argument('inpath', nargs='?', help='Path to a test data file or' |
41 | | - ' directory to be opened.') |
42 | | -parser.add_argument('-n', '--noupdatecheck', action='store_true', help='To disable update check.') |
43 | | -parser.add_argument('-d', '--debugconsole', action='store_true', |
44 | | - help='To start debug console for RIDE problem debugging, and wxPython inspection tool.') |
45 | | -parser.add_argument('-s', '--settingspath', default=None, help='<full path|settings filename>\n' |
46 | | - 'To use different settings use the option --settingspath followed by' |
47 | | - ' the path to the settings file or file name.') |
48 | | -parser.add_argument('-v', '--version', action='version', version=f'{version.VERSION}', |
49 | | - help='To see RIDE\'s version.') |
50 | | -parser.add_argument('-h', '--help', action='help', help='RIDE can be started either without any ' |
51 | | - 'arguments or by giving a path to a test data file or' |
52 | | - ' directory to be opened.') |
53 | | -# arguments = parser.parse_args() |
| 43 | +the download link from https://wxPython.org/""") |
54 | 44 |
|
55 | 45 | try: |
56 | 46 | import wx |
57 | 47 | import wx.lib.inspection |
58 | | - from wx import Colour, Size |
| 48 | + from wx import Colour |
59 | 49 | except ModuleNotFoundError: |
60 | | - print(errorMessage) |
| 50 | + print(errorMessageTemplate.substitute(reason="wxPython not found.")) |
61 | 51 | sys.exit(1) |
62 | 52 |
|
63 | 53 | # Insert bundled robot to path before anything else |
|
67 | 57 |
|
68 | 58 | def main(*args): |
69 | 59 | _replace_std_for_win() |
70 | | - arguments = parser.parse_args() |
71 | | - noupdatecheck = arguments.noupdatecheck |
72 | | - debugconsole = arguments.debugconsole |
73 | | - settingspath = arguments.settingspath |
74 | | - inpath = arguments.inpath # _parse_args(*args) |
75 | | - # print(f"DEBUG: main.py {noupdatecheck=} {debugconsole=} {settingspath=} {inpath=}") |
| 60 | + if '--version' in args: |
| 61 | + try: |
| 62 | + from . import version |
| 63 | + except ImportError: |
| 64 | + print("Error getting RIDE version!") |
| 65 | + sys.exit(1) |
| 66 | + print(version.VERSION) |
| 67 | + sys.exit(0) |
| 68 | + noupdatecheck, debug_console, settings_path, inpath = _parse_args(args) |
| 69 | + if len(args) > 3 or '--help' in args: |
| 70 | + print(__doc__) |
| 71 | + sys.exit() |
76 | 72 | try: |
77 | | - _run(inpath, not noupdatecheck, debugconsole, settingspath=settingspath) |
| 73 | + _run(inpath, not noupdatecheck, debug_console, settingspath=settings_path) |
78 | 74 | except Exception: # DEBUG |
79 | 75 | import traceback |
80 | 76 | traceback.print_exception(*sys.exc_info()) |
81 | 77 | sys.stderr.write('\n\nUse --help to get usage information.\n') |
82 | 78 |
|
83 | 79 |
|
| 80 | +def _parse_args(args): |
| 81 | + if not args: |
| 82 | + return False, False, None, None |
| 83 | + arguments = list(args) |
| 84 | + noupdatecheck = '--noupdatecheck' in arguments |
| 85 | + if noupdatecheck: |
| 86 | + arguments.remove('--noupdatecheck') |
| 87 | + debug_console = '--debugconsole' in arguments |
| 88 | + if debug_console: |
| 89 | + arguments.remove('--debugconsole') |
| 90 | + settings_path = None |
| 91 | + if '--settingspath' in arguments: |
| 92 | + arguments.remove('--settingspath') |
| 93 | + if len(arguments) > 0: |
| 94 | + settings_path = arguments.pop(0) |
| 95 | + else: |
| 96 | + settings_path = None |
| 97 | + inpath = arguments[0] if arguments else None |
| 98 | + return noupdatecheck, debug_console, settings_path, inpath |
| 99 | + |
| 100 | + |
84 | 101 | def _run(inpath=None, updatecheck=True, debug_console=False, settingspath=None): |
85 | 102 | # print(f"DEBUG: ENTER _run {inpath=}, {updatecheck=}, {debug_console=}") |
86 | 103 | try: |
@@ -141,7 +158,7 @@ def _show_old_wxpython_warning_if_needed(parent=None): |
141 | 158 | style = wx.ICON_EXCLAMATION |
142 | 159 | if not parent: |
143 | 160 | _ = wx.App() |
144 | | - parent = wx.Frame(None, size=Size(0, 0)) |
| 161 | + parent = wx.Frame(None, size=(0, 0)) |
145 | 162 | sys.stderr.write("{0}\n{1}\n".format(title, message)) |
146 | 163 | dlg = wx.MessageDialog(parent, message=message, caption=title, style=style) |
147 | 164 | dlg.ShowModal() |
|
0 commit comments