OpenStructure
Loading...
Searching...
No Matches
ost_startup.py
Go to the documentation of this file.
1import sys, os, glob
2import optparse
3
4
5def show_help(option, opt, value, parser):
6 parser.print_help()
7 sys.exit(-1)
8
9
10def show_version(option, opt, value, parser):
11 print("OpenStructure " + ost.__version__)
12 sys.exit(0)
13
14
15def interactive_flag(option, opt, value, parser):
16 pass
17
18
19def stop():
20 sys.exit(0)
21
22
24 parser = OstOptionParser(usage=usage, conflict_handler="resolve", prog="ost")
25 parser.add_option(
26 "-i",
27 "--interactive",
28 action="callback",
29 callback=interactive_flag,
30 help="start interpreter interactively (must be first parameter, ignored otherwise)",
31 )
32 parser.add_option(
33 "-h",
34 "--help",
35 action="callback",
36 callback=show_help,
37 help="show this help message and exit",
38 )
39 parser.add_option(
40 "-V",
41 "--version",
42 action="callback",
43 callback=show_version,
44 help="show OST version and exit",
45 )
46 parser.add_option(
47 "-v",
48 "--verbosity_level",
49 action="store",
50 type="int",
51 dest="vlevel",
52 default=2,
53 help="sets the verbosity level [default: %default]",
54 )
55 parser.disable_interspersed_args()
56 return parser
57
58
59usage = """
60 ost [ost options] [script to execute] [script parameters]
61 ost [action name] [action options]
62
63The following actions are available:
64"""
65
66action_path = os.path.abspath(os.environ.get("OST_EXEC_DIR", ""))
67for action in sorted(glob.glob(os.path.join(action_path, "ost-*"))):
68 usage += " %s\n" % action[len(action_path) + 5 :]
69
70usage += '\nEach action should respond to "--help".'
71
72
73class OstOptionParser(optparse.OptionParser):
74 def __init__(self, **kwargs):
75 optparse.OptionParser.__init__(self, **kwargs)
76
77 def exit(self, status_code, error_message):
78 print(error_message, end=" ")
79 sys.exit(-1)
80
81
82_site_packs = "python%d.%d/site-packages" % sys.version_info[0:2]
83_base_dir = os.getenv("DNG_ROOT")
84sys.path.insert(0, os.path.join(_base_dir, "lib", _site_packs))
85
86from ost import *
87import ost
88
89parser = get_options_parser(usage)
90(options, args) = parser.parse_args()
91
92HistoryFile = os.path.expanduser("~/.ost_history")
93
94# we are not in GUI mode.
95gui_mode = False
96
97sys.ps1 = "ost> "
98sys.ps2 = "..... "
99sys.argv = sys.argv[1:]
100home = os.getenv("HOME") or os.getenv("USERPROFILE")
101_ostrc = os.path.join(home, ".ostrc")
102if os.path.exists(_ostrc):
103 try:
104 exec(compile(open(_ostrc).read(), _ostrc, "exec"))
105 except Exception as e:
106 print(e)
107
108PushVerbosityLevel(options.vlevel)
109
110# this should probably only be added when running an interactive shell
111sys.path.append(".")
112
113if len(parser.rargs) > 0:
114 script = parser.rargs[0]
115 sys_argv_backup = sys.argv
116 sys.argv = parser.rargs
117 try:
118 exec(compile(open(script, "rb").read(), script, "exec"))
119 finally:
120 sys.argv = sys_argv_backup
exit(self, status_code, error_message)
interactive_flag(option, opt, value, parser)
get_options_parser(usage)
show_help(option, opt, value, parser)
Definition ost_startup.py:5
show_version(option, opt, value, parser)