Skip to main content

Boot.py is an small set of tools to build simple scripts. Python3 only, and really small: 2Kb!

Project description

https://badge.fury.io/py/boot.py.svg https://travis-ci.org/mariocesar/boot.py.svg?branch=master

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()

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

boot.py-0.9.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

boot.py-0.9-py2.py3-none-any.whl (7.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file boot.py-0.9.tar.gz.

File metadata

  • Download URL: boot.py-0.9.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for boot.py-0.9.tar.gz
Algorithm Hash digest
SHA256 c8382c25f994aa61f332e83a3018f9e330342fd7cb53ac3d5bb6a1a8d6cda75b
MD5 cd857818d71602447b8313a01e0f69d2
BLAKE2b-256 81ec835ee3357da548150fd0812d55c392d2ca23c6775c1a5268495672038705

See more details on using hashes here.

File details

Details for the file boot.py-0.9-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for boot.py-0.9-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 8a1d3b5acb7d430e6e60c596cf5ed248d87e56bd7a8e3ba9e7ff7aa3fba7f311
MD5 c5006fe8d6a64879ac868ec83cef8029
BLAKE2b-256 94b62f6e47f932f9388a8c544008e5d27d45ab05cc14c0dc8342efa8f626d86d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page