<commit_before># exodep

Exodep falls in the class of Dependency Management tools - just.  Most
Dependency Management tools, such as Ruby gem, Python Pip and Node.js npm
are designed to help programs run.  Exodep is intended to help manage
dependencies when building programs in languages such as C++, C# and Java.

Exodep's focus is on downloading dependencies. Unlike other Dependency
Management tools, it doesn't offer special help on how downloaded files
are compiled, or resolve conflicts between different versions of an
external library being used in the same project.

Most other Dependency Management tools operate in a one-click style fashion.
With Exodep it is expected that you may have to edit exodep configuration
files as part of your project setup in order to get the files you want in
the right place for your particular project.

As such Exodep might be more accurately described as a Dependecy
Downloader, or Dependency Refresher.

# Getting Started

Firstly, you'll need Python 3 on your system.

Once you've got Python installed, the simplest way to install `exodep` is to
simply copy `exodep.py` to your repo, most likely placing it in its
top-level directory.  You can then configure `exodep` using `exodep`
configuration files as described below.

Alternatively, if you are on Windows, you can download and install the `exodep`
installer from [here](https://raw.githubusercontent.com/codalogic/exodep/master/installers/windows/Release/exodep.msi).
This will also add an option to run `exodep.py` into the Windows Explorer
context menu. On the downside, it may not always be the most up-to-date
version.  (One option is to install `exodep` into a location other than the
default `C:\Program Files\...` folder, such as `C:\Programs\Exodep`.  This
then doesn't require Administrator permissions to write to it, and `exodep.py`
can be used to update itself with the latest version simply by double clicking
on it in Windows Explorer, or by using the right-cick context menu.)

# Principles of Operation

Exodep downloads files from a Github, Gitlab or Bitbucket-like central code repository
over HTTP.  It can also copy from files that are on a central file server
that is mounted into your directory structure.  For convenience it's assumed that
the former scenario is in effect.

The basic command for downloading a file is the `get` command.  So that this
command can be compact, exodep has a `uritemplate` that says how to convert the
file named in the `get` command into a URL that can be used to download the
desired file.  As part of this, exodep allows the user to specify variables.
These can be used to expand the `uritemplate` and specify where the downloaded
files should be copied to.  The `default` command allows setting default values
for variables that can be overridden.

More than one exodep configuration file can be used in a project.  This is
supported using the `include` command.

# Configuration

The operation of `exodep.py` is configured using configuration files.  The
configuration file to use can be specified on the command line.

If no configuration file is specified, the default usage scenario, `exodep.py`<commit_msg>Made details about Windows Installer MSI clearer in Readme.md<commit_after># exodep

Exodep falls in the class of Dependency Management tools - just.  Most
Dependency Management tools, such as Ruby gem, Python Pip and Node.js npm
are designed to help programs run.  Exodep is intended to help manage
dependencies when building programs in languages such as C++, C# and Java.

Exodep's focus is on downloading dependencies. Unlike other Dependency
Management tools, it doesn't offer special help on how downloaded files
are compiled, or resolve conflicts between different versions of an
external library being used in the same project.

Most other Dependency Management tools operate in a one-click style fashion.
With Exodep it is expected that you may have to edit exodep configuration
files as part of your project setup in order to get the files you want in
the right place for your particular project.

As such Exodep might be more accurately described as a Dependecy
Downloader, or Dependency Refresher.

# Getting Started

Firstly, you'll need Python 3 on your system.

Once you've got Python installed, the simplest way to install `exodep` is to
simply copy `exodep.py` to your repo, most likely placing it in its
top-level directory.  You can then configure `exodep` using `exodep`
configuration files as described below.

## Windows Installer

If you are on Windows, you can download and install the [`exodep`
Windows MSI installer] (https://raw.githubusercontent.com/codalogic/exodep/master/installers/windows/Release/exodep.msi).

This doesn't install Python 3, but it does add registry settings to create a
context menu entry in Windows Explorer to run `exodep.py` in the current folder.

On the downside, it may not always be the most up-to-date
version.  One option is to install `exodep` into a location other than the
default `C:\Program Files\...` folder, such as `C:\Programs\Exodep`.  This
then doesn't require Administrator permissions to write to it, and `exodep.py`
can be used to update itself with the latest version simply by double clicking
on it in Windows Explorer, or by using the right-cick context menu.

# Principles of Operation

Exodep downloads files from a Github, Gitlab or Bitbucket-like central code repository
over HTTP.  It can also copy from files that are on a central file server
that is mounted into your directory structure.  For convenience it's assumed that
the former scenario is in effect.

The basic command for downloading a file is the `get` command.  So that this
command can be compact, exodep has a `uritemplate` that says how to convert the
file named in the `get` command into a URL that can be used to download the
desired file.  As part of this, exodep allows the user to specify variables.
These can be used to expand the `uritemplate` and specify where the downloaded
files should be copied to.  The `default` command allows setting default values
for variables that can be overridden.

More than one exodep configuration file can be used in a project.  This is
supported using the `include` command.

# Configuration

The operation of `exodep.py` is configured using configuration files.  The
configuration file to use can be specified on the command line.

If no configuration file is specified, the default usage scenario, `exodep.py`
{'fraction_non_alphanumeric': 0.04388133498145859, 'fraction_numerical': 0.0004635352286773795, 'mean_word_length': 4.485593220338983, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 16, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '437796', 'n_tokens_mistral': 1699, 'n_tokens_neox': 1633, 'n_words': 993}