Metadata-Version: 2.1
Name: chamberenv
Version: 0.0.2
Summary: Manage chamber environments.
Home-page: https://github.com/normoes/chamberenv
Author: Norman Moeschter-Schenck
Author-email: norman.moeschter@gmail.com
License: UNKNOWN
Download-URL: https://github.com/normoes/chamberenv/archive/v0.0.2.tar.gz
Description: # Manage chamber environments
        
        This project is inspired by [`tfenv`](https://github.com/tfutils/tfenv).
        
        It's supposed to be a helper tool, that easily installs, removes, lists and switches different versions of chamber.
        
        It downloads the different versions of `chamber` from the github release page: https://github.com/segmentio/chamber/releases.
        
        It creates the configuration folder: `~/.config/chamberenv`.
        
        It manages the executable files in: `~/.local/bin`, so make sure this is in your `PATH` variable.
        
        **_Note_**:
        * This is work in progress.
        * I only tested it with `linux`, downloading and running `chamber` versions like `chamber-v2.8.2-linux-amd64`.
        
        ## How to
        * Get help:
          - `chamberenv --help`
        * Get the tool version:
          - `chamberenv --version`
        * General usage.
          - List managed versions of chamber:
              ```
                  chamberenv list
                  # Result:
                  * v2.8.2 (set by /home/norman/.config/chamberenv/version)
                    v2.8.0
              ```
          - Install a specific version of chamber:
              ```
                  chamberenv install --chamber-version v2.7.5
                  # Result:
                  INFO:ChamberEnv:Chamber version: v2.7.5
                  INFO:ChamberEnv:CHECKSUM OK.
                  Downloaded chamber version 'v2.7.5'.
                  Using chamber version 'v2.7.5' now.
        
                  chamber version
                  # Result:
                  chamber v2.7.5
              ```
              + The version of chamber will be downloaded if necessary.
              + The given version will be activated as well.
           - Use a specific version of chamber:
              ```
                  chamberenv use --chamber-version v2.8.2
                  # Result:
                  INFO:ChamberEnv:Chamber version: v2.8.2
                  Using chamber version 'v2.8.2' now.
        
                  chamber version
                  # Result:
                  chamber v2.8.2
              ```
              + Nothing is downloaded.
              + The given version will be activated.
          - Uninstall a specific version of chamber:
              ```
                  chamberenv uninstall --chamber-version v2.7.5
                  # Result:
                  INFO:ChamberEnv:Chamber version: v2.7.5
                  Removed chamber version 'v2.7.5'.
              ```
              + The downloaded files for this version of chamber will be removed.
              + You cannot uninstall the active version of chamber:
                  ```
                      chamber version
                      # Result:
                      chamber v2.8.2
        
                      chamberenv uninstall --chamber-version v2.7.5
                      # Result:
                      INFO:ChamberEnv:Chamber version: v2.8.2
                      ERROR:ChamberEnv:Not uninstalling the active chamber version. Switch first using 'use'.
                  ```
              + The only exception to the above rule is when the active version of chamber is the only version installed. This will remove the downloaded files as well as the `chamber` exectuable.
        * The option `--debug` shows debug information.
        
        See:
        * `chamberenv --help`.
        * `chamberenv install --help`
        * ...
        
        ## requirements.txt vs. setup.py
        
        According to these sources:
        * [python documentation](https://packaging.python.org/discussions/install-requires-vs-requirements/)
        * [stackoverflow - second answer by jonathan Hanson](https://stackoverflow.com/questions/14399534/reference-requirements-txt-for-the-install-requires-kwarg-in-setuptools-setup-py)
        
        I try to stick to:
        * `requirements.txt` lists the necessary packages to make a deployment work.
        * `setup.py` declares the loosest possible dependency versions.
        
        ### Creating `requirements.txt`
        
        You won't ever need this probably - This is helpful when developing the `chamberenv`.
        
        `pip-tools` is used to create `requirements.txt`.
        * There is `requirements.in` where dependencies are set and pinned.
        * To create the `requirements.txt`, run `update_requirements.sh` which basically just calls `pip-compile`.
        
        **_Note_**:
        * There also is `build_requirements.txt` which only contains `pip-tools`. I found, when working with virtual environments, it is necessary to install `pip-tools` inside the virtual environment as well. Otherwise `pip-sync` would install outside the virtual environment.
        
        A development environment can be created like this:
        ```
            # Create a virtual environment 'venv'.
            python -m venv venv
            # Activate the virtual environment 'venv'.
            . /venv/bin/activate
            # Install 'pip-tools'.
            pip install --upgrade -r build_requirements.txt
            # Install dependencies.
            pip-sync requirements.txt
            ...
            # Deactivate the virtual environment 'venv'.
            deactivate
        ```
        
        ## Executable
        If installed using `pip`, a system executable will be installed as well.
        This way, you can just use the tool like every executable on your system.
        ```
        chamberenv --help
        ```
        
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python
Description-Content-Type: text/markdown
