<commit_before>esseff
========================

Esseff is a simple tool for managing the deployment and versioning of AWS Step Functions
(https://aws.amazon.com/step-functions/).

You provide a directory containing .json (or .yaml) files for your state-machine
definitions and some configuration, and it does the rest!


Versioning
----------

Esseff creates state-machines using the name of the definition file (a-state-machine.yml -> 
a-state-machine) and an automatically incremented version number.

So, the first deployment of the a-state-machine.yml file will yield a state machine with the
name a-state-machine-0, and a subsequent deployment (IF the definition has changed) will yield
a-state-machine-1.

Upon successful deployment, the results of the deploy call will be written to a .deploy file of
the base name of state machine (a-state-machine.deploy) within the given directory, which
typically looks like this::

    {
        "date": "2016-12-14 11:19:45.346000-07:00",
        "name": "a-state-machine-3",
        "arn": "arn:aws:states:us-west-2:1234567890:stateMachine:a-state-machine-3"
    }


Example Execution
-----------------

Contents of some state-machines folder::

    $ ls ~/my-project/state-machines
    a-state-machine.yaml	esseff.config   some-state-machine.config     some-state-machine.json

Contents of esseff.config (base config values for all machines in directory)::

    [AWS]
    # Will default to credentials defined in environment, if these are omitted
    aws_access_key_id = {some access key}
    aws_secret_access_key = {some secret key}
    region = us-west-2

    [Machines]
    # Default execution role for the state machines
    execution-role-arn = arn:aws:iam::{some account}:role/service-role/StatesExecutionRole

Contents of some-state-machine.config (overrides values in esseff.config)::<commit_msg>Added disclaimer<commit_after>esseff
========================

Esseff is a simple tool for managing the deployment and versioning of AWS Step Functions
(https://aws.amazon.com/step-functions/).

You provide a directory containing .json (or .yaml) files for your state-machine
definitions and some configuration, and it does the rest!


DISCLAIMER
***********

I am not a python developer, by trade. Any and all pull requests to improve this tool are
encouraged and welcome. Thanks!


Versioning
----------

Esseff creates state-machines using the name of the definition file (a-state-machine.yml -> 
a-state-machine) and an automatically incremented version number.

So, the first deployment of the a-state-machine.yml file will yield a state machine with the
name a-state-machine-0, and a subsequent deployment (IF the definition has changed) will yield
a-state-machine-1.

Upon successful deployment, the results of the deploy call will be written to a .deploy file of
the base name of state machine (a-state-machine.deploy) within the given directory, which
typically looks like this::

    {
        "date": "2016-12-14 11:19:45.346000-07:00",
        "name": "a-state-machine-3",
        "arn": "arn:aws:states:us-west-2:1234567890:stateMachine:a-state-machine-3"
    }


Example Execution
-----------------

Contents of some state-machines folder prior to execution::

    $ ls ~/my-project/state-machines
    a-state-machine.yaml	esseff.config   some-state-machine.config     some-state-machine.json

Contents of esseff.config (base config values for all machines in directory)::

    [AWS]
    # Will default to credentials defined in environment, if these are omitted
    aws_access_key_id = {some access key}
    aws_secret_access_key = {some secret key}
    region = us-west-2

    [Machines]
    # Default execution role for the state machines
    execution-role-arn = arn:aws:iam::{some account}:role/service-role/StatesExecutionRole

Contents of some-state-machine.config (overrides values in esseff.config)::
{'fraction_non_alphanumeric': 0.11119711042311661, 'fraction_numerical': 0.02063983488132095, 'mean_word_length': 3.6937046004842613, 'pattern_counts': {'":': 6, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '161843', 'n_tokens_mistral': 1166, 'n_tokens_neox': 1079, 'n_words': 406}