Boot.py is an small set of tools to build simple scripts. Python3 only, and really small: 2Kb!
Project description
Install and Use
Install with pip.
pip install boot.py
Create a file and import boot. For example this will install a virtual environment, install requirements, and create some files.
#!/usr/bin/env python3
import os
import venv
from boot import step, run
from pathlib import Path
root_path = Path(__file__).parent.resolve()
venv_dir = root_path / '.venv'
with step(f'Creating virtualenv in {venv_dir.name}'):
if not venv_dir.exists():
venv.create(venv_dir, with_pip=True)
with step('Installing requirements'):
run(f'{venv_dir / "bin/pip"} install -r requirements.txt')
with step('Creating directories'):
run(f'mkdir -p public/media')
run(f'mkdir -p public/static')
with step('Environment file'):
envfile = root_path / '.env'
if not envfile.exists():
with open(envfile, 'w') as handle:
os.chmod(envfile, 0o600)
handle.write('')
This will output.
$ ./script.py
Creating virtualenv in .venv ... [Ok]
Installing requirements ... [Ok]
Installing project ... [Ok]
Creating directories ... [Ok]
Environment file ... [Ok]
Simple!
You can also compose tasks to decide what to execute and what order.
#!/usr/bin/env python3
import os
import venv
from boot import step, run, task
from pathlib import Path
root_path = Path(__file__).parent.resolve()
venv_dir = root_path / '.venv'
@task
def build(this)
with step(f'Creating virtualenv in {venv_dir.name}'):
if not venv_dir.exists():
venv.create(venv_dir, with_pip=True)
with step('Creating directories'):
run(f'mkdir -p public/media')
run(f'mkdir -p public/static')
with step('Environment file'):
envfile = root_path / '.env'
if not envfile.exists():
with open(envfile, 'w') as handle:
os.chmod(envfile, 0o600)
handle.write('')
@task
def requirements(this)
with step('Installing requirements'):
run(f'{venv_dir / "bin/pip"} install -r requirements.txt')
@task
def backup(this)
with step(f'Backup db'):
run('pg_dump -d database -f output.sql')
if __name__ == '__main__':
tasks = {
'default': build >> requirements,
'build': build,
'requirements': requirements,
}
if len(sys.argv) == 1:
if sys.argv[0] in tasks:
tasks[sys.argv[0]]()
else:
print(f'Unknown task: {sys.argv[0]}')
print(f'Available tasks are: {tasks.keys()}')
else:
default()
There are helpers to build scripts with less code, for example we can replace in the code above the main call with a a simple task argument parser:
from boot.cli import ActionsCommand
if __name__ == '__main__':
ActionsCommand.main(
default=build >> requirements,
build=build,
requirements=requirements,
}
This parse –help
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file boot.py-0.16.tar.gz.
File metadata
- Download URL: boot.py-0.16.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
958b8165c67996b0ce80d49e86ce3082146930949ec4ebc4c80f41bcd98287ed
|
|
| MD5 |
e278fbf71d41833b4609d8e7e93cf2d6
|
|
| BLAKE2b-256 |
8f02663478b989d6e52c3fead2cb36bed20aa97d604515e94d314afe594007f5
|
File details
Details for the file boot.py-0.16-py2.py3-none-any.whl.
File metadata
- Download URL: boot.py-0.16-py2.py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9317d464e71395adb07d165149438147ed951ce277166d2958c346479ef1262f
|
|
| MD5 |
4d090e52133cac357ff0222e1f932ace
|
|
| BLAKE2b-256 |
34f4ccb9cc0a692f2300b40db3c13f091047380dee682c94d206287947309fa8
|