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, use distman to dist to a deployment area using options defined in the dist.json and example stack.env files:

$ cp example_stack.env stack.env
$ distman [-d]

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:

{
    "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 stack.env envstack file, where variables are defined with curly brackets only, e.g.:

"{DEPLOY_ROOT}/lib/python/pipe"

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 a dist.json file (remove -d when ready):

$ distman -d

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

$HOME/.local/pipe/prod/
├── bin
│   ├── distman -> versions/distman.0.c73fe42
│   └── versions
│       └── distman.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 stack.env env stack file:

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

By default, distman dists to a prod folder under $DEPLOY_ROOT. This can be changed at any time using $ENV or updating or modifying the stack.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 stack.env envstack file.

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

Variable Description
$DEPLOY_ROOT file deployment root directory
$ENV target environment (e.g. prod or dev)
$ROOT dist root directory

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.2.1.tar.gz (20.2 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for distman-0.2.1.tar.gz
Algorithm Hash digest
SHA256 e42adc27196dbd3f7cf6e35a393c11e6f0f70b139dbcdc4009cc22facb08aa60
MD5 6a8637dd407869ad27454c3018ffa56d
BLAKE2b-256 08e6088caefda2af6fc1768f54029ce05cbdf4bcb9ac15b85277bd0852a9830e

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