Create and manage developments environment.
Project description
ENVy
ENVy is an environment manager that allows developers to get easily set up with a project, both by managing dependency installation and by making common workflows easily discoverable.
Config Docs
The ENVy config file contains all the information ENVy uses to manage your project. At the root of your project directory create a YAML file called .envyfile
. Check out some example envyfiles here.
The top level of the file contains 3 keys: environment, actions, and services.
Environment:
base:
This contains the information for the base system to be running. If not specified, ENVy will use Ubuntu 18
image: <The docker image that the environment should be built off of>
(Note: we currently only support Ubuntu images) This might look like:
base:
image: ubuntu:18.04
system-packages:
The list of packages that your project needs that would come from a package manager (ex. apt
in Ubuntu)
Each entry in the list should be an object of the following form:
package: <The name of the package>
version: <Optional: A version string to pin this package to>
An example config might look like
system-packages:
- package: curl
version: 7.65.0
- package: wget
- package: python3
setup-steps:
The list of steps required to take the base system with the system packages and install the rest of the dependencies. This is where you'd put actions like installing python dependencies or seeding a database.
name: <The human-readable name given for this build step>
type: <Either script or remote>
triggers: <The (optional) trigger for this action: see below>
There are two kinds of steps.
A script
type setup step is used for executing a list of shell commands inside the environment. This step has an additional run
key:
run: <One or more shell commands to execute. Ex: 'npm run install'>
A remote
type setup step is used for executing a shell script that can be pulled from a remote location, such as installing meteor
. This step type has an additional url
key:
url: <The url to download the bash script from>
Triggers
The triggers
key is optional, and controls how often the command is re-executed on envy up
. By default, the command will only be run once per environment: it will only run again if the user executes envy nuke
.
A trigger can be defined as always
. This command will be run on every invocation of envy up
.
Alternatively, a trigger can be given an object detailing more complex trigger mechanisms, like so:
triggers:
system-packages: <A list of previously-defined system packages this step should trigger on. This will cause a re-run if the version of that package is changed>
files: <A list of files within the project's directory. This will cause a re-run when the contents of any of those files change. Ex: 'Pipfile' for a python dependencies step>
steps: <A list of previously-defined setup-steps. This will cause a re-run when any of the listed steps are themselves triggered for a re-run>
An example trigger set might look like:
triggers:
files:
- Pipfile
- Pipfile.lock
steps:
- pipenv
Here, the setup step would run the first time in a clean environment, and then would re-trigger on envy up
if Pipfile or Pipfile.lock changed, or if a previous step called pipenv
was run.
Actions:
A list of common workflows for the project. These would include anything from compiling a C++ application to linting a python project to starting up a web server. Anything that a developer would commonly do can be placed as an action, to be found with envy --help
. Each action has a structure as follows:
name: <The sub-command name used on when invoking envy>
script: <The bash script executed in the environment for this action>
help: <The help message shown next to the command in envy --help>
One such action could be linting javascript code:
actions:
- name: lint
script: 'eslint .'
help: 'lint the project'
Services
ENVy can manage sidecar services for you using docker-compose. Point envy to your docker-compose file like so:
compose-file: <Name of docker-compose file in the project>
The sidecar services will be started on envy up
, and stopped on envy down
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
File details
Details for the file envy-project-0.1.3.tar.gz
.
File metadata
- Download URL: envy-project-0.1.3.tar.gz
- Upload date:
- Size: 18.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 267a78c0e31f62baa7b13720761c6c84bcb4717138837086b00b050ea7bfc7e5 |
|
MD5 | 549ad36a72fdd91e47221764f7f11a3f |
|
BLAKE2b-256 | 911d93b1ed7df8ca94b64c54e95365c88ee32de1a525a87f525241ed10422453 |
File details
Details for the file envy_project-0.1.3-py3-none-any.whl
.
File metadata
- Download URL: envy_project-0.1.3-py3-none-any.whl
- Upload date:
- Size: 26.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f672e80c3573419db6b62ecfa386cb05339aa1c6b852d850d662258dea3c69d |
|
MD5 | 68c307f934b1f6cc4e98022b40366f82 |
|
BLAKE2b-256 | 57e27041020ad25ca399c3ae228b1eff9b1d6784e8f9b29730cd09a0c5d9975b |