Metadata-Version: 2.0
Name: enaml-native-cli
Version: 1.2
Summary: Build native mobile apps in python
Home-page: https://github.com/codelv/enaml-native-cli/
Author: CodeLV
Author-email: frmdstryr@gmail.com
License: MIT
Platform: UNKNOWN
Requires-Dist: appdirs
Requires-Dist: atom
Requires-Dist: colorama (>=0.3.3)
Requires-Dist: jinja2
Requires-Dist: pipdeptree
Requires-Dist: ply
Requires-Dist: sh (>=1.10,<1.12.5)
Requires-Dist: six

# enaml-native-cli

[![Build Status](https://travis-ci.org/codelv/enaml-native-cli.svg?branch=master)](https://travis-ci.org/codelv/enaml-native-cli)

Cli for [enaml-native](https://github.com/codelv/enaml-native). This is for the new build system
which allows more modular app builds.

This is used to:

 1. create new apps
 2. install and remove app packages and dependencies
 3. build and run your apps 

Includes customized versions of python-for-android and python-for-ios (kivy-ios).

### Installation

Install via pip using the `--user` flag. 

```bash 

#: Do either
pip install --user enaml-native-cli


```


### Usage

Start a new enaml-native project:`

```bash 

enaml-native init <AppName> <bundle.id> <dest/folder>

```

for example

```bash

#: Note: the apps/ folder must exist!
enaml-native init HelloWorld com.example.helloworld apps/

```

Once done, cd to the app folder and activate the app's virtual environment.

```bash 
cd apps/HelloWorld
source venv/bin/activate
```

Now install any app requirements (or use `pip install` and `enaml-native link`)

```bash

enaml-native install enaml-native-icons

```

List apps requirements (or use pip list)

```bash
enaml-native list
```

Build and run your app

```bash

#: Build python requirements
enaml-native build-python
enaml-native build-android # Required to do a gradle sync
enaml-native build-python # Yes, at the moment you must do it again

#: Run the app
enaml-native run-android

```



### Creating an Enaml Package

The `enaml-native-cli` was designed to be as configurable as 
possible without over complicating the code. A package is simply a regular
python package that typically includes android and ios resources as `data_files`.

Enaml packages are customizable using setuptool's `entry_points`. The following
entry points are supported:

1. `p4a_recipe` - Entry point that installs a python-for-android recipe. See the p4a docs for examples.
2. `enaml_native_post_install` - Entry point that defines a function that is called when a user runs `enaml-native install <your-package>`
3. `enaml_native_linker` - Entry point that defines a function that is called to link your package to the user's android and ios projects.
4. `enaml_native_unlinker` - Entry point that defines a function that is called to unlink your package from the user's android and ios projects.
5. `enaml_native_pre_uninstall` - Entry point that defines a function that is called when a user runs `enaml-native uninstall <your-package>`

All of these are optional. Search the `enaml-native` script commands for where exactly they are called.


### Adding commands to the CLI

Commands can be added by using the `enaml_native_command` entry point. 

The entry point must return a subclass (NOT an instance) of the `Command` class. 

This command will be added to the cli and can be accessed from the context (via `ctx.cmds['cmd-name']`) 
whenever your package is installed.



