2019-03-10 16:38:59 +01:00
|
|
|
import abc
|
2018-12-11 14:10:01 +01:00
|
|
|
import argparse
|
2017-10-14 17:25:24 +02:00
|
|
|
|
2019-03-10 16:38:59 +01:00
|
|
|
# compatible with Python 2 *and* 3
|
|
|
|
|
ABC = abc.ABCMeta('ABC', (object,), {'__slots__': ()})
|
2017-10-14 17:25:24 +02:00
|
|
|
|
2019-03-10 16:38:59 +01:00
|
|
|
class Cmd(ABC): # export
|
2017-10-14 17:25:24 +02:00
|
|
|
|
2019-03-10 16:38:59 +01:00
|
|
|
@abc.abstractmethod
|
2017-10-14 17:25:24 +02:00
|
|
|
def run(self, args):
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
def __init__(self, name, help):
|
2019-03-10 16:38:59 +01:00
|
|
|
self.name = name
|
2017-10-14 17:25:24 +02:00
|
|
|
self.help = help
|
|
|
|
|
|
|
|
|
|
def _run(self, args):
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
def add_parser(self, parsers):
|
2019-03-10 16:38:59 +01:00
|
|
|
r = parsers.add_parser(self.name, help=self.help,
|
2017-10-14 17:25:24 +02:00
|
|
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
2019-03-10 16:38:59 +01:00
|
|
|
r.set_defaults(func=self.run)
|
2017-10-14 17:25:24 +02:00
|
|
|
return r
|
|
|
|
|
|