Metadata-Version: 2.1
Name: rezup
Version: 1.3.1
Summary: Rez launching environment manager
Home-page: https://github.com/davidlatwe/rezup
Author: davidlatwe
Author-email: davidlatwe@gmail.com
Maintainer: davidlatwe
Maintainer-email: davidlatwe@gmail.com
License: GPLv3
Project-URL: Source, https://github.com/davidlatwe/rezup
Project-URL: Tracker, https://github.com/davidlatwe/rezup/issues
Keywords: package resolve version build install software management
Platform: any
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Utilities
Classifier: Topic :: Software Development
Classifier: Topic :: System :: Software Distribution
Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=3
Description-Content-Type: text/markdown
Requires-Dist: distlib (<1,>=0.3.1)
Requires-Dist: virtualenv (<21,>=20.4.4)
Requires-Dist: shellingham (<2,>=1.4.0)
Requires-Dist: python-dotenv (<1,>=0.17)
Provides-Extra: tests
Requires-Dist: pytest ; extra == 'tests'

# rezup

[Rez](https://github.com/nerdvegas/rez) launching environment manager


### What is this ?

A Rez production virtual environment management tool, which allows safe environment update without any interruption. Plus a convenient virtual environment setup interface.


### Install

```
# python 3+
$ pip install rezup
```


### Usage

By typing `rezup` in terminal, a container named `.main` will be created under `~/.rezup` by default, the root location can be changed by setting env var `REZUP_ROOT_LOCAL`. Once that command is done, vanilla Rez environment is presented by a subprocess and simply typing `exit` to escape.

Each container holds at least one virtual environment folder which are named by timestamp. With that convention, latest version of environment can be provided without affecting existing user.

```
# Container/Revision structure

\.rezup
   |
   + - {container}
   |     |
   :     + - {revision}  # venv and bin tools lives here
   :     |
         + - {revision}  # the folder is named as timestamp, e.g. 1619780350.588625
         |
         + - {revision}  # latest one will be provided when calling `rezup use {container}` in terminal

```

For centralize management in production, one remote container can be defined with env var `REZUP_ROOT_REMOTE`. The remote container only contains the venv installation manifest file `rezup.toml`, and when being asked, a venv revision will be created locally or re-used if same revision exists in local.

To customize environment, you can write a `~/rezup.toml` to tell what should be installed and what environment variable should have. For example :

```toml
description = "My rez setup"

[rez]
name = "rez"
url = "rez>=2.83"

[[extension]]
name = "foo"
url = "~/dev/foo"
edit = true

[[extension]]
name = "bar"
url = "git+git://github.com/get-bar/bar"
isolation = true
python = 2.7

[env]
REZ_CONFIG_FILE = "/path/to/rezconfig.py"

```

The settings in section `rez` and `extension` will be parsed and pass to `pip`, so the `url` can be e.g. a version specifier and the package will be installed from PyPi.

The `edit` can be used if the `url` is a filesystem path that point to the source code and the Rez environment can run in dev-mode.

If the extension has `isolation` set to true, additional venv will be created just for that package. Different Python version (if can be found from system) will be used when `python` entry presented.


### Caveat

Rez production install validation will failed, due to Rezup manages entrypoints a bit like [pipx](https://github.com/pipxproject/pipx), which is different from the setup of Rez install script. So e.g. `rez-env` can not nesting context (rez bin tools will not be appended in `PATH`), without [changing](https://github.com/davidlatwe/rez/commit/4bc4729c73ab61294cfb8fda24b4b9cf1b060e08) production install validation mechanism.


### Commands

use default container `.main`
```
$ rezup
```

use foo
```
$ rezup use foo
```

use foo and do job
```
$ rezup use foo --do {script.bat}
```

create new venv into default container (`~/rezup.toml` will be picked)
```
$ rezup use --make
```

create new venv into container foo (`~/rezup.toml` will be picked)
```
$ rezup use foo --make
```

create new venv into default container with specific `rezup.toml`
```
$ rezup use --make {rezup.toml}
```

remove container foo
```
$ rezup drop foo
```

list containers
```
$ rezup list
```


