Skip to main content

Super simple file distribution

Project description

distman

Distributes files and directories to versioned destinations defined in dist.json files.

Installation

The easiest way to install:

$ pip install distman

Alternatively,

$ git clone https://github.com/rsgalloway/distman
$ cd distman
$ python setup.py install

Files and directories can be distributed from any folder or git repo containing a dist.json file.

Quickstart

distman looks for a dist file called dist.json at the root of a directory or git repo. The dist file defines the file distrubution instructions.

The basic format of the dist.json file is:

{
    "version": "1",
    "author": "<email>",
    "targets": {
        "<target>": {
            "source": "<source-path>",
            "destination": "<target-path>"
        },
    }
}

where <source-path> is the relative path to the source file or directory, and <target-path> is the target destination path, and <target> is a named target label to use when running distman commands. You can define as many targets as you need.

See the dist.json file in this repo for an example.

Target paths can include environment variables, such as those defined in the distman.env envstack file, where variables are defined with curly brackets only, e.g.:

"{DEPLOY_ROOT}/lib/python/distman"

When files are distributed (or disted), they are copied to a versions folder and a symlink is created to the version. When a new version is disted, the version number is incremented and the link is updated.

Usage

To dist files defined in the dist.json file (use -d for dryrun):

$ distman [-d]

This will dist files to the $DEPLOY_ROOT folder defined in the distman.env envstack file and might look something like this using default values:

$HOME/.local/distman/prod/
├── env
│   ├── distman.env -> versions/distman.env.0.c73fe42
│   └── versions
│       └── distman.env.0.c73fe42
└── lib
    └── python
        ├── distman -> versions/distman.0.c73fe42
        └── versions
            └── distman.0.c73fe42
                ├── cli.py
                ├── config.py
                ├── dist.py
                ├── __init__.py
                ├── logger.py
                ├── source.py
                └── util.py

To override the root folder, set the $ROOT env var, or update the distman.env stack file:

$ ROOT=/var/tmp/tools distman [-d]

By default, distman dists to a prod folder under $ROOT. This can be changed at any time using $ENV or updating or creating a new distman.env envstack file:

$ ENV=dev distman [-d]

This will change prod to dev in the target deplyment path. This is useful for deploying files or code to different development environments.

Dist Info

When disting files, distman will create hidden dist info files that meta data about the source files. For example, if the source file is called foobar.py then the dist info file that will be created will be called .foobar.py.dist. The dist info files will be created at the deployment root.

Config

Most congifation is done in the distman.env envstack file.

Default config settings are in the config.py module. The following environment variables are supported:

Variable Description
$ENV target environment (e.g. prod or dev)
$ROOT root directory to distrute files

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

distman-0.1.2.tar.gz (19.3 kB view details)

Uploaded Source

File details

Details for the file distman-0.1.2.tar.gz.

File metadata

  • Download URL: distman-0.1.2.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.8.10

File hashes

Hashes for distman-0.1.2.tar.gz
Algorithm Hash digest
SHA256 0886a60c79e727abfdb28b89a177c5a3f3aed5e6e634ba5bfb42476011154ba4
MD5 64c02228f4f11dff60d0ad5d898fa7c7
BLAKE2b-256 4a8ee060c3a98025d19c3ca545beb6064f258fbfcd4865073f1e4df78589b87d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page