123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- # -*- coding: utf-8 -*-
- import sys
- import argparse
- import transaction
-
- from cliff.app import App
- from cliff.command import Command
- from cliff.commandmanager import CommandManager
-
- from pyramid.paster import bootstrap
- from tracim.exceptions import CommandAbortedError
-
-
-
- class TracimCLI(App):
-
- def __init__(self):
- super(TracimCLI, self).__init__(
- description='TracimCli',
- version='0.1',
- command_manager=CommandManager('tracimcli'),
- deferred_help=True,
- )
-
- def initialize_app(self, argv):
- self.LOG.debug('initialize_app')
-
- def prepare_to_run_command(self, cmd):
- self.LOG.debug('prepare_to_run_command %s', cmd.__class__.__name__)
-
- def clean_up(self, cmd, result, err):
- self.LOG.debug('clean_up %s', cmd.__class__.__name__)
- if err:
- self.LOG.debug('got an error: %s', err)
-
-
- def main(argv=sys.argv[1:]):
- myapp = TracimCLI()
- return myapp.run(argv)
-
-
- if __name__ == "__main__":
- main()
-
-
- class AppContextCommand(Command):
- """
- Command who initialize app context at beginning of take_action method.
- """
- auto_setup_context = True
-
- def take_action(self, parsed_args):
- super(AppContextCommand, self).take_action(parsed_args)
- if self.auto_setup_context:
- with bootstrap(parsed_args.config_file) as app_context:
- with app_context['request'].tm:
- self.take_app_action(parsed_args, app_context)
-
- def get_parser(self, prog_name):
- parser = super(AppContextCommand, self).get_parser(prog_name)
-
- parser.add_argument(
- "-c",
- "--config",
- help='application config file to read (default: development.ini)',
- dest='config_file',
- default="development.ini"
- )
- return parser
-
- # def run(self, parsed_args):
- # super().run(parsed_args)
- # transaction.commit()
-
-
- class TestTracimCommand(AppContextCommand):
-
- def take_app_action(self, parser, app_context):
- print('test')
-
-
- class Extender(argparse.Action):
- """
- Copied class from http://stackoverflow.com/a/12461237/801924
- """
- def __call__(self, parser, namespace, values, option_strings=None):
- # Need None here incase `argparse.SUPPRESS` was supplied for `dest`
- dest = getattr(namespace, self.dest, None)
- # print dest,self.default,values,option_strings
- if not hasattr(dest, 'extend') or dest == self.default:
- dest = []
- setattr(namespace, self.dest, dest)
- # if default isn't set to None, this method might be called
- # with the default as `values` for other arguements which
- # share this destination.
- parser.set_defaults(**{self.dest: None})
- try:
- dest.extend(values)
- except ValueError:
- dest.append(values)
|