Skip to content

falgore88/command_manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

command_manager

Entry point for Python scripts. Helps you structure additional scripts of your application within one or more Python packages and call them from one place.

Installation

Install using pip...

pip install command_manager

Using

Create a Python package anywhere in your application.

For example, the package commands and the entry point manage.py

.
├── commands
│   ├── __init__.py
│   └── my_first_command.py
├── src
└── manage.py

In manage.py add the following:

if __name__ == '__main__':
    import logging.config # Optional for logging
    from command_manager import Manager

    LOGGING = { # Optional for logging
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'verbose': {
                'format': '%(levelname)s | %(asctime)s | %(module)s | %(message)s'
            }
        },
        'handlers': {
            'commands_handler': {
                'level': 'INFO',
                'class': 'logging.handlers.RotatingFileHandler',
                'formatter': 'verbose',
                'filename': os.path.join("logs", 'commands.log'),
                'maxBytes': 100000,
                'backupCount': 10,
            }
        },
        'loggers': {
            'commands.my_first_command': {
                'handlers': ['commands_handler'],
                'level': 'INFO',
                'propagate': False
            }
        },
    }

    logging.config.dictConfig(LOGGING) # Optional for logging
    manager = Manager(["commands"])
    manager.run()

In my_first_command.py add the following:

from command_manager.commands import BaseCommand


class Command(BaseCommand):

    description = "Simple command"

    def add_arguments(self, parser):
        parser.add_argument("--arg1", help="argument arg1")
        parser.add_argument("--arg2", help="argument arg2")

    def handle(self, *args, **kwargs):
        self.logger.info("START")
        print "Hello Word: arg1={arg1} arg2={arg2}".format(**kwargs)
        self.logger.info("END")

Warning: The class must be called the Command and inherited from BaseCommand

Now call manage.py from the console.
python manage.py

Call our command my_first_command.py python manage.py my_first_command

About

Entry point for Python scripts

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages