comparison sat/core/launcher.py @ 3282:e7e7be79fbcd

core (launcher): extra arguments can now be passed the service with `bg`, `fg` and `dbg`: - `dbg` is an alias for `debug` - extra arguments can be passed to the service, use `-- --help` to see them`
author Goffi <goffi@goffi.org>
date Mon, 25 May 2020 16:15:05 +0200
parents a3639d6d9643
children 751d8fa45ced
comparison
equal deleted inserted replaced
3281:a3639d6d9643 3282:e7e7be79fbcd
137 137
138 def parse_args(self): 138 def parse_args(self):
139 parser = argparse.ArgumentParser(description=f"Launch {self.APP_NAME} backend") 139 parser = argparse.ArgumentParser(description=f"Launch {self.APP_NAME} backend")
140 parser.set_defaults(cmd=self.cmd_background) 140 parser.set_defaults(cmd=self.cmd_background)
141 subparsers = parser.add_subparsers() 141 subparsers = parser.add_subparsers()
142 extra_help = f"arguments to pass to {self.APP_NAME} service"
142 143
143 bg_parser = subparsers.add_parser( 144 bg_parser = subparsers.add_parser(
144 'background', 145 'background',
145 aliases=['bg'], 146 aliases=['bg'],
146 help=f"run {self.APP_NAME} backend in background (as a daemon)") 147 help=f"run {self.APP_NAME} backend in background (as a daemon)")
148 bg_parser.add_argument('extra_args', nargs=argparse.REMAINDER, help=extra_help)
147 bg_parser.set_defaults(cmd=self.cmd_background) 149 bg_parser.set_defaults(cmd=self.cmd_background)
148 150
149 fg_parser = subparsers.add_parser( 151 fg_parser = subparsers.add_parser(
150 'foreground', 152 'foreground',
151 aliases=['fg'], 153 aliases=['fg'],
152 help=f"run {self.APP_NAME} backend in foreground") 154 help=f"run {self.APP_NAME} backend in foreground")
155 fg_parser.add_argument('extra_args', nargs=argparse.REMAINDER, help=extra_help)
153 fg_parser.set_defaults(cmd=self.cmd_foreground) 156 fg_parser.set_defaults(cmd=self.cmd_foreground)
154 157
155 dbg_parser = subparsers.add_parser( 158 dbg_parser = subparsers.add_parser(
156 'debug', 159 'debug',
160 aliases=['dbg'],
157 help=f"run {self.APP_NAME} backend in debug mode") 161 help=f"run {self.APP_NAME} backend in debug mode")
162 dbg_parser.add_argument('extra_args', nargs=argparse.REMAINDER, help=extra_help)
158 dbg_parser.set_defaults(cmd=self.cmd_debug) 163 dbg_parser.set_defaults(cmd=self.cmd_debug)
159 164
160 stop_parser = subparsers.add_parser( 165 stop_parser = subparsers.add_parser(
161 'stop', 166 'stop',
162 help=f"stop running {self.APP_NAME} backend") 167 help=f"stop running {self.APP_NAME} backend")
204 '--logfile', str(log_file), 209 '--logfile', str(log_file),
205 ] 210 ]
206 if twistd_opts is not None: 211 if twistd_opts is not None:
207 server_opts.extend(twistd_opts) 212 server_opts.extend(twistd_opts)
208 server_opts.append(self.APP_NAME_FILE) 213 server_opts.append(self.APP_NAME_FILE)
214 if args.extra_args:
215 try:
216 args.extra_args.remove('--')
217 except ValueError:
218 pass
219 server_opts.extend(args.extra_args)
209 try: 220 try:
210 server_options.parseOptions(server_opts) 221 server_options.parseOptions(server_opts)
211 except usage.error as ue: 222 except usage.error as ue:
212 print(server_options) 223 print(server_options)
213 print("%s: %s" % (sys.argv[0], ue)) 224 print("%s: %s" % (sys.argv[0], ue))