|
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