Metadata-Version: 2.1
Name: charmcraft
Version: 0.4.0
Summary: The main tool to build, upload, and develop in general the Juju charms.
Home-page: https://github.com/canonical/charmcraft
Author: Facundo Batista
Author-email: facundo.batista@canonical.com
License: Apache-2.0
Platform: UNKNOWN
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3
Description-Content-Type: text/markdown
Requires-Dist: Jinja2 (==2.11.2)
Requires-Dist: PyYAML (==5.3.1)
Requires-Dist: appdirs (==1.4.4)
Requires-Dist: macaroonbakery (==1.3.1)
Requires-Dist: python-dateutil (==2.8.1)
Requires-Dist: requests-toolbelt (==0.9.1)
Requires-Dist: requests (==2.24.0)
Requires-Dist: tabulate (==0.8.7)

# What is charmcraft?

Charmcraft provides a streamlined, powerful, opinionated, and flexible tool to
develop, package, and manage the lifecycle of Juju charm publication, focused
particularly on charms written within the [Operator Framework].

[Operator Framework]: https://pypi.org/project/ops/

It is still in heavy, initial development and so a lot is still To Be
Done. However it is already useful, and already simplifies the life of the
charmer.

## How do I install it?

The easiest way to install `charmcraft` is by doing

    sudo snap install --beta charmcraft

(more options are available as per `snap info charmcraft`) but some
people with more esoteric needs not covered by the snap might need to
instead go via `pip3 install --user charmcraft`.

## What can it do for me today?

It can build your charm! No need for git submodules nor pesky hook symlinks, you
can concentrate on your charm being pure python code (plus the required juju
metadata), and `charmcraft` will fill in the boring bits for you.

For example, given a charm that consists exclusively of

    my-charm
    ├── metadata.yaml
    ├── requirements.txt
    └── src/
        └── charm.py

(and assuming `ops` is in `requirements.txt`), then running `charmcraft build`
will produce a charm that looks like

    my-charm
    ├── dispatch
    ├── hooks
    │   ├── install -> ../dispatch
    │   ├── start -> ../dispatch
    │   └── upgrade-charm -> ../dispatch
    ├── metadata.yaml
    ├── src/
    │   └── charm.py
    └── venv/
        ├── ops/
        │   ├── ...
        └── yaml/
            └── ...

which should be all you need to `juju deploy` the charm!


