<commit_before>## Synopsis

**stowage** is a very simple package-manager-alike for Docker containers that wrap cli tools. The idea is not to replace package management; this is largely a development-environment convenience to bring together tools in a relatively simple way.

This is absolutely not a production environment tool; the use case is not so strong there anyway, but the fundamental use of the root account and the various little conveniences are largely inappropriate and could lead to security issues.

## Example

You can download stowage as a container and use it to self-install:

  $ sudo docker pull ealexhudson/stowage
  $ sudo docker run --rm -ti --privileged --read-only=true -v /:/stowage-managed-system ealexhudson/stowage self-install

After that, stowage should be available on the system - but nothing will yet be installed:

  $ sudo stowage list
  $ sudo stowage install hello-world
  $ sudo hello-world

  Hello from Docker!
  This message shows that your installation appears to be working correctly.

  [.. etc ..]

The install command can take a Docker image name (in which case it tries to choose some simple defaults), or a reference to a local JSON file (for more complex commands - there are some examples in the examples folder). In the future I also want to add an ability to refer to JSON file by URL.

## Motivation

This is primarily a tool for development environments: the point is to be able to quickly and easily distribute tools to fellow workers that will effectively auto-update, and be able to use them within build pipelines (which are probably container builds).

stowage owes a lot of inspiration to GNU Stow, but has a different model as it attempts to be semi-self hosted - you can run stowage through a container, and then use stowage to manage stowage.

## Making a CLI tool installable via stowage

If you have a CLI tool wrapped in a container, you're already most of the way there - stowage will try to pick some simple defaults. 

## Developing
<commit_msg>Minor formatting nit.<commit_after>## Synopsis

**stowage** is a very simple package-manager-alike for Docker containers that wrap cli tools. The idea is not to replace package management; this is largely a development-environment convenience to bring together tools in a relatively simple way.

This is absolutely not a production environment tool; the use case is not so strong there anyway, but the fundamental use of the root account and the various little conveniences are largely inappropriate and could lead to security issues.

## Example

You can download stowage as a container and use it to self-install:

```
  $ sudo docker pull ealexhudson/stowage
  $ sudo docker run --rm -ti --privileged --read-only=true -v /:/stowage-managed-system ealexhudson/stowage self-install
```

After that, stowage should be available on the system - but nothing will yet be installed:

```
  $ sudo stowage list
  $ sudo stowage install hello-world
  $ sudo hello-world

  Hello from Docker!
  This message shows that your installation appears to be working correctly.

  [.. etc ..]
```

The install command can take a Docker image name (in which case it tries to choose some simple defaults), or a reference to a local JSON file (for more complex commands - there are some examples in the examples folder). In the future I also want to add an ability to refer to JSON file by URL.

## Motivation

This is primarily a tool for development environments: the point is to be able to quickly and easily distribute tools to fellow workers that will effectively auto-update, and be able to use them within build pipelines (which are probably container builds).

stowage owes a lot of inspiration to GNU Stow, but has a different model as it attempts to be semi-self hosted - you can run stowage through a container, and then use stowage to manage stowage.

## Making a CLI tool installable via stowage

If you have a CLI tool wrapped in a container, you're already most of the way there - stowage will try to pick some simple defaults. 

## Developing

{'fraction_non_alphanumeric': 0.04608181370133071, 'fraction_numerical': 0.0, 'mean_word_length': 4.035980148883374, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4273083', 'n_tokens_mistral': 1049, 'n_tokens_neox': 983, 'n_words': 622}