Bolt is a task runner inspired by grunt and written in
python that helps you automate any task in your project
whether it is executed in your development environment or in your CI/CD pipeline.
Bolt gives you the power to specify how tasks should be executed, and it takes
care of the rest. And it is as simple as describing and configuring your tasks
in the boltfile.py
.
# boltfile.py
import bolt
config = {
'pip': {
'command': 'install',
'options': {
'r': './requirements.txt'
}
},
'delete-pyc': {
'sourcedir': './src',
'recursive': True
},
'nose': {
'directory': './tests',
'options': {
'with-xunit': True,
'xunit-file': './logs/unit_test_log.xml'
}
}
}
bolt.register_task('run-tests', ['pip', 'delete-pyc', 'nose'])
# in your favorite shell
bolt pip
# to install requirements
bolt nose
# executes unit tests
bolt run-tests
# installs requirements, deletes .pyc files, and runs unit tests
Let's face it, you want to automate everything, but doing so becomes a burden; especially, if you are working on a cross-platform application. You may find your-self switching CI/CD systems and going through the pain of rewriting your pipelines to the specific domain languages they use. Python is cross-platform and any pipline will allow you to execute a command. This makes Bolt ideal to create reusable tasks that can execute in any environment indpendently of tools. And, It's fun!
You can start by installing bolt and following the examples in the Getting Started guide. Once you become familiar with Bolt, you can look at other topics in Using Bolt, to learn about the different features it provides.
Help is highly appreciated! If you want to contribute to the project, make sure to read our guidelines. If you are a tool developer, and you want to provide Bolt support in your library or application don't hesitate asking for help. We want to build a great community around Bolt, and we will help you in any way we can.
Make sure you read the bolt documentation.