Skip to content
This repository was archived by the owner on Mar 10, 2020. It is now read-only.
This repository was archived by the owner on Mar 10, 2020. It is now read-only.

Early application access is broken #89

Open

Description

@noirbizarre

The commit 44c1c1a broke the early app access provided by #34

As a consequence, it's not possible anymore to dynamically add commands depending on an application setting.

Activity

  1. noirbizarre commented on Feb 10, 2014

    @noirbizarre
    Author

    Here what I want to be able to write:

    manager = Manager(create_app)
    
    def register_commands(manager):
        manager.add_command('clean', Clean())
        manager.add_command('urls', ShowUrls())
    
        for module in manager.app.config['PLUGINS']:
            try:
                __import__('myapp.plugins.{0}.commands'.format(module))
            except:
                pass
    
    if __name__ == '__main__':
        register_commands(manager)
        manager.run()

    and in a plugin (ex: myapp.plugins.sample.commands):

    from myapp.commands import manager
    
    @manager.command
    def do_something():
        '''Do smething'''
        pass
  2. noirbizarre commented on Apr 2, 2014

    @noirbizarre
    Author

    Any news on this issue ?

    Not being able to register commands late or to access config early is really blocking me right now :/

  3. m-u-xyz commented on Apr 28, 2014

    @m-u-xyz
    Collaborator

    That is still possible, you just need to go about it differently. From my own code:

    class AppCommand(Command):
        """Runs app-specific commands"""
        capture_all_args = True
        add_help = False
    
        def __init__(self):
                super(AppCommand,self).__init__()
                self.add_option(Option("-h","--help", dest="help",action="store_true"))
    
        def __call__(self,app,args, help=False, **kwargs):
                mgr = Manager(app)
                app.init_manager(mgr) ## this adds a bunch of subcommands
                mgr.handle("manage.py app",args)
    

    Handling new "top-level" commands incrementally would be a major redesign of flask-script's interpreter loop. Pull requests gladly accepted.

  4. noirbizarre commented on May 5, 2014

    @noirbizarre
    Author

    Thanks, I will try your approach.

    If I find the time and a good design, I will submit a pull-request !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions