|
13 | 13 | # See the License for the specific language governing permissions and |
14 | 14 | # limitations under the License. |
15 | 15 |
|
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 | | - |
| 16 | +import argparse |
35 | 17 | import os |
36 | 18 | import sys |
37 | | -from string import Template |
38 | 19 |
|
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.\ |
| 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.\ |
42 | 29 | You can install with 'pip install wxPython' on most operating systems, or find the \ |
43 | | -the download link from https://wxPython.org/""") |
| 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() |
44 | 54 |
|
45 | 55 | try: |
46 | 56 | import wx |
47 | 57 | import wx.lib.inspection |
48 | | - from wx import Colour |
| 58 | + from wx import Colour, Size |
49 | 59 | except ModuleNotFoundError: |
50 | | - print(errorMessageTemplate.substitute(reason="wxPython not found.")) |
| 60 | + print(errorMessage) |
51 | 61 | sys.exit(1) |
52 | 62 |
|
53 | 63 | # Insert bundled robot to path before anything else |
|
57 | 67 |
|
58 | 68 | def main(*args): |
59 | 69 | _replace_std_for_win() |
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() |
| 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=}") |
72 | 76 | try: |
73 | | - _run(inpath, not noupdatecheck, debug_console, settingspath=settings_path) |
| 77 | + _run(inpath, not noupdatecheck, debugconsole, settingspath=settingspath) |
74 | 78 | except Exception: # DEBUG |
75 | 79 | import traceback |
76 | 80 | traceback.print_exception(*sys.exc_info()) |
77 | 81 | sys.stderr.write('\n\nUse --help to get usage information.\n') |
78 | 82 |
|
79 | 83 |
|
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 | | - |
101 | 84 | def _run(inpath=None, updatecheck=True, debug_console=False, settingspath=None): |
102 | 85 | # print(f"DEBUG: ENTER _run {inpath=}, {updatecheck=}, {debug_console=}") |
103 | 86 | try: |
@@ -158,7 +141,7 @@ def _show_old_wxpython_warning_if_needed(parent=None): |
158 | 141 | style = wx.ICON_EXCLAMATION |
159 | 142 | if not parent: |
160 | 143 | _ = wx.App() |
161 | | - parent = wx.Frame(None, size=(0, 0)) |
| 144 | + parent = wx.Frame(None, size=Size(0, 0)) |
162 | 145 | sys.stderr.write("{0}\n{1}\n".format(title, message)) |
163 | 146 | dlg = wx.MessageDialog(parent, message=message, caption=title, style=style) |
164 | 147 | dlg.ShowModal() |
|
0 commit comments