No project description provided
Project description
A tool for developing Node.js and Python projects
dotrun
makes use of a Docker image to provide a predictable sandbox for running Node and Python projects.
Features:
- Make use of standard
package.json
script entrypoints:dotrun
runsyarn run start
within the snap confinementdotrun foo
runsyarn run foo
within the snap confinement
- Detect changes in
package.json
and only runyarn install
when needed - Detect changes in
requirements.txt
and only runpip3 install
when needed - Run scripts using environment variables from
.env
and.env.local
files - Keep python dependencies in
.venv
in the project folder for easy access
Usage
$ dotrun # Install dependencies and run the `start` script from package.json
$ dotrun clean # Delete `node_modules`, `.venv`, `.dotrun.json`, and run `yarn run clean`
$ dotrun install # Force install node and python dependencies
$ dotrun exec # Start a shell inside the dotrun environment
$ dotrun exec {command} # Run {command} inside the dotrun environment
$ dotrun {script-name} # Install dependencies and run `yarn run {script-name}`
$ dotrun -s {script} # Run {script} but skip installing dependencies
$ dotrun --env FOO=bar {script} # Run {script} with FOO environment variable
Installation
Requirements
- Linux / macOS
- Docker (Get Docker)
- Python > 3.6 and PIP
macOS performance
For optimal performance on Docker we recommend enabling a new experimental file sharing implementation called virtiofs. Virtiofs is only available to users of the following macOS versions:
- macOS 12.2 and above (for Apple Silicon)
- macOS 12.3 and above (for Intel)
Add dotrun on new projects
To fully support dotrun in a new project you should do the following:
- For Python projects, ensure Talisker is at
0.16.0
or greater inrequirements.txt
- Add
.dotrun.json
and.venv
to.gitignore
- Create a
start
script inpackage.json
to do everything needed to set up local development. E.g.:"start": "concurrently --raw 'yarn run watch' 'yarn run serve'"
- The above command makes use of concurrently - you might want to consider this
- Older versions of Gunicorn are incompatible with strict confinement so we need Gunicorn >= 20
- The update landed in Talisker but at the time of writing hasn't made it into a new version
- If there's no new version of Talisker, simply add
gunicorn==20.0.4
to the bottom ofrequirements.txt
However, once you're ready to completely switch over to dotrun
, simply go ahead and remove the run
script.
Testing
The test
folder contains a bunch of tests, written in Python, against the dotrun
binary, using example projects in the test/fixtures
folder.
These tests can be run against the current codebase:
python3 -m venv .venv # Create a python environment for testing
source .venv/bin/activate
pip3 install -e . # Install the dotrun module as a python package
python3 -m unittest discover --start-directory tests # Run the tests against the installed python package
Automated tests of pull requests
The "PR" action builds the Python package and runs the tests
, similar to the solution above. This will run against every pull request.
Publish
All the changes made to the main branch will be automatically published as a new version on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.