1. anatoly techtonik
  2. locally


`locally` is a collection of bootstrap scripts and a
repository of shared code in Python.

What is bootstrap script
It is a single file that is placed at your repository
root to be executed by users right after checkout.

What does the script do
Typically it prepares your project for development or
for running directly from a source code checkout. It
does this by downloading the stuff and building it
(if necessary) automatically.

Why would you need it
It enables users to try latest code without overhead of
building and packaging things themselves. In other

  * it lowers the barrier for contribution
  * reduces time loss between checkout and run

I don't want it to mess with my system
The name `locally` means that script does not install
anything into your system or mess with system
settings. Good scripts are written in a way that
everything is downloaded and compiled in your checkout

It is not secure
locally.py provides getsecure() function that uses
SHA-1+size validation for all downloads. It is
possible to make that configurable (like use SHA-3) on

How does `locally` help me
`locally` means `not globally`, and by convention all
stuff is gathered in a subdir named `.locally/`
Constants ROOT and LOOT should help to work with it.

ROOT is an absolute path that points to the checkout,
LOOT is ROOT/.locally/

Also, the code is in public domain, so you can copy
and paste it anywhere.

But why
To test if Python is better than Bash, Perl, Ruby,
JavaScript etc. for generic cross-platform automation. 
There is always a lot of missing parts that you should
take care about and the best way to find them is to
try and do things.

'locally.py' was born as more helpers gathered as a
result of writing such scripts.

Your goal is to create a script (typically called
bootstrap.py) that does everything necessary to get
your project running without tedious installation
steps or documentation read.

You do so by copying/pasting relevant pieces of code
available from this repository.

The script should automate as much manual steps as
possible and provide feedback for user where it is
required. The scripts usually sets environment,
fetches archives, dependencies and executes source
code in this setup.

Where to start
Study by example starting from 01.xxx.py script to
see what works for you. When you get the concept,
take a look into `locally` module for other useful

See examples:

anatoly techtonik <techtonik@gmail.com>
..contributions are welcome..

Public domain or MIT.