# CLI

This package is responsible for our CLI tools, which will be used directly by our users.

## For developers

Useful scripts:

| Script              | Description                                              |
| ------------------- | -------------------------------------------------------- |
| start               | Run cli for development                                  |
| debug               | Debug using node.js example: `npm run debug -- generate` |
| build:production    | Builds project for deployment                            |
| build               | Builds project for local development                     |
| fix-version         | Fix version                                              |
| lint:fix            | Fix for any lint issues                                  |
| lint                | Check for any lint issues                                |
| prebuild:production | Remove dist folder                                       |
| test                | Runs test                                                |

### Running the application

Add a `.env` file in the `packages/cli` folder with the following content:

```bash
export SNOWPLOW_CONSOLE_API_KEY_ID=YOUR_KEY_ID_HERE
export SNOWPLOW_CONSOLE_API_KEY=YOUR_KEY_HERE
export SNOWPLOW_CONSOLE_ORG_ID=YOUR_ORG_ID_HERE
export SNOWPLOW_CONSOLE_API_URL=https://next.console.snowplowanalytics.com/api/msc
```

If you are testing against production locally, make sure to set it up correctly:

```bash
export SNOWPLOW_CONSOLE_API_URL=https://console.snowplowanalytics.com/api/msc
```

Then use:

```bash
npm run snowtype -- init
```

to initialize the project.

Edit file `snowtype.config.ts` adding data products or event specifications.

Then run:

```bash
npm run snowtype generate
```

This will run the app and generate output code using ts-node.

Alternatively, you can directly use the JavaScript file by running:

```bash
npm run build
node dist/index.js
```

Notes:

- To see the type in the generated code (visible under the `snowtype` output folder), you need to install a related tracker, for instance:

```bash
npm i -D @snowplow/browser-tracker -w @snowplow/snowtype
```
