# 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              |
| 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
SNOWPLOW_CONSOLE_API_KEY_ID=YOUR_KEY_ID_HERE
SNOWPLOW_CONSOLE_API_KEY=YOUR_KEY_HERE
SNOWPLOW_CONSOLE_API_URL=https://next.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
```
