123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- # -*- 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 pyramid.scripting import AppEnvironment
- from tracim.exceptions import CommandAbortedError
- from tracim.lib.utils.utils import DEFAULT_TRACIM_CONFIG_FILE
-
-
- class TracimCLI(App):
- def __init__(self) -> None:
- super(TracimCLI, self).__init__(
- description='TracimCli',
- version='0.1',
- command_manager=CommandManager('tracimcli'),
- deferred_help=True,
- )
-
- def initialize_app(self, argv) -> None:
- self.LOG.debug('initialize_app')
-
- def prepare_to_run_command(self, cmd) -> None:
- self.LOG.debug('prepare_to_run_command %s', cmd.__class__.__name__)
-
- def clean_up(self, cmd, result, err) -> None:
- 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: argparse.Namespace) -> None:
- 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: str) -> argparse.ArgumentParser:
- parser = super(AppContextCommand, self).get_parser(prog_name)
-
- parser.add_argument(
- "-c",
- "--config",
- help='application config file to read (default: {})'.format(
- DEFAULT_TRACIM_CONFIG_FILE
- ),
- dest='config_file',
- default=DEFAULT_TRACIM_CONFIG_FILE,
- )
- return parser
-
- # def run(self, parsed_args):
- # super().run(parsed_args)
- # transaction.commit()
-
-
- # TODO - G.M - 10-04-2018 - [Cleanup][tempExample] - Drop this
- class TestTracimCommand(AppContextCommand):
-
- def take_app_action(
- self,
- parser: argparse.ArgumentParser,
- app_context: AppEnvironment
- ) -> None:
- 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)
|