#########################
Getting Started with IVPM
#########################

Installing IVPM
***************

IVPM must be installed before it can be used to work with a project. Typically,
the easiest approach is to install IVPM as a user-installed package:

.. code-block:: bash

    % python3 -m pip install --user ivpm

Once this is done, you can invoke IVPM either via the entry-point script (ivpm)
or as a Python module:

.. code-block:: bash

    % ivpm --help
    % python3 -m ivpm --help

Initializing an Exiting IVPM Project
************************************
After fetching the source for an IVPM-enabled project, the `ivpm update` command
is used to fetch source dependencies and initialize a Python virtual environment
for the project.

The IVPM project, itself, is IVPM-enabled. The steps to fetch and initialize
the project are shown below (assuming ivpm has already been installed):

.. code-block:: bash

    % git clone https://github.com/fvutils/ivpm
    % cd ivpm
    % ivpm update

Note that, by default, IVPM clones sub-projects using your ssh public key. If
this key has not been registered with a Git server, then cloning any projects
from that server will fail. Git projects can be cloned using https 
(ie anonymously) by running `ivpm update -a`.

IVPM performs the following tasks as a part of the `update` operation:

- Fetches the source for each dependent project (eg .git, .tar.gz, .jar, etc)
- Identifies dependent projects that are, themselves, IVPM-enabled and 
  determines sub-dependencies
- Identifies dependent projects that are Python projects and dependencies 
  from PyPi. Installs these into the project-local Python virtual 
  environment, with source projects installed in `editable` mode.

Initializing a New IVPM Project
*******************************