# App Tools


CLI para desenvolver mini apps, sucinto e clean como um haikai.

## Parâmetros gerais

### help

Informa os detalhes de uso do comando desejado.

Exemplo:

```js
ame-app-tools <comando> --help
```

### verbose

Exibe logs mais detalhados de um determinado comando.

Exemplo:

```js
ame-app-tools <comando> --verbose
```

### Disponibilidade 

Os parâmetros gerais estão disponíveis nos seguintes comandos:

* signup
* start 
* credentials
* publish (deprecated)
* build (deprecated)
* push-version
* env
* invite

## Comandos disponíveis


### ame-app-tools

Mostra a lista de comandos disponíveis.

```js
ame-app-tools
```


### signup

Faz o seu cadastro como desenvolvedor de mini apps

```js
ame-app-tools signup 
```

### create

Cria um projeto com um mini app totalmente funcional

```js
ame-app-tools create <project-name>
```

#### Parâmetros disponíveis 

* Cria o projeto sem registrar na loja de miniapps: `--skip-ame-store`
* Cria o projeto aceitando todos os valores padrões: `--yes`

### start

Inicia o seu mini app em um workspace online

Exemplo para iniciar o projeto no workspace online:

```js
ame-app-tools start
```

#### Parâmetros disponíveis 

* Sobe todos os arquivos: `--upload-all`
* Cria um qrcode novo: `--new-qrcode`
* Força o start: `--force`
* Exibe o deeplink do workspace: `--show-deeplink`
* Zipa os arquivos: `--zip`

### publish e build (deprecated)

Criam e enviam um build do mini app para ser avaliado por um revisor antes de ser publicado.

Os comandos publish e build serão desativados, em breve. Que tal utilizar o comando push-version?

### push-version

Cria e envia um build do mini app para ser avaliado por um revisor antes de ser publicado.

```js
ame-app-tools push-version --local
```

#### Parâmetro disponível 

* Adiciona comentários no build: `--message`

#### Exemplo

```js
ame-app-tools push-version --message <revision-message>
```
### self-update

Desinstala a versão antiga e instala a mais nova.

```js
ame-app-tools self-update
```

### invite

Convida um desenvolvedor para participar da construção do miniapp.

```js
ame-app-tools invite dev@calindra.com.br
```

#### Parâmetros disponíveis 

* Aceita um convite: `--accept`
* Lista todos os desenvolvedores: `--list`
* Remove um desenvolvedor: `--remove`

#### Exemplos

#### --accept

```js
ame-app-tools invite --accept
2 convites
? Escolha: 
  1) aceitar convite do miniapp "confeitaria-real" enviado por confeiteiro@gmail.com
  2) aceitar convite do miniapp "teste" enviado por teste@gmail.com
  3) não aceitar nenhum convite
  Answer: 1
```

#### --list

```js
ame-app-tools invite --list
```

#### --remove

```js
ame-app-tools invite --remove dev@calindra.com.br
```

### credentials

Cadastra o client_id (Application Key) e o client_secret (Application Token).

```js
ame-app-tools credentials <client_id> <client_secret>
```

Para que seu miniapp possa transacionar com AME voce precisa obter um par de chaves em https://minhaconta.amedigital.com/ 
(Para versao de homologacao https://minhaconta.hml.amedigital.com/).

### env

Altera as variáveis de ambiente.

```js
ame-app-tools env variavel='valor'
```

#### Parâmetros disponíveis

* Altera em produção: `--prod`
* Altera em homologação: `--hml`
* Altera em desenvolvimento: `--dev`

### tail-logs

Para ler logs de producao do email.

```js
ame-app-tools tail-logs <email>
```

### open-share 

Abre um compartilhamento do share-api.

```js
ame-app-tools open-share <share-id>
```

## Comandos para testes

### test-initialization-params

Inicia o seu mini app passando parâmetros em formato compatível com querystring*. Os dados passados serão convertidos em um objeto **plano** onde a chave e o valor serão do tipo **string**.

```
ame-app-tools test-initialization-params 'batata=frita&cachorro=quente'
```
Estes parâmetros podem ser acessados em seu mini app invocando o método [**Ame.getInitializationInfos()**](https://super-app-client.calindra.com.br/docs/ame-super-app-client/#getinitializationinfos)

```
Ame.getInitializationInfos().then(infos => {
      console.log("infos: ", infos);
    }
);
```

As informações de retorno estão dentro do atributo **data** do objeto de retorno.

```
infos:  [
    {
        "type": "NAVIGATION",
        "data": {
            "batata": "frita",
            "cachorro": "quente"
        }
    }
]
``` 

### order-details
Inicia o seu mini app passando o id de um pedido.

```
ame-app-tools order-details 1b8bb06b-b217-460a-9a41-72279a0f8123
```

Esse id pode ser acessado através do método [**Ame.getOrderDetails()**](https://super-app-client.calindra.com.br/docs/ame-super-app-client/#getorderdetails) no mini app.

```js
Ame.getOrderDetails()
    .then(orderDetails => {
		console.log(orderDetails)
		/* Exemplo de saída desse console.log:
		{
			orderId: "1b8bb06b-b217-460a-9a41-72279a0f8123"
		} */
	})
	.catch(response => {
	    console.log("Erro ao recuperar detalhes do pedido: ", response)
	})
```
