open-index/open-npm huggingface dataset:
npm package: @sanalabs/cli
Description: Sana CLI
Latest version: 0.1.3

# Sana CLI

Command line tool for syncing data with the Sana Learn API from JSON files.

## Install

```
npm install -g @sanalabs/cli
```

This installs the command `sana`.

## Usage

```
Usage: sana [options] [command]

Sana Web API Wrapper

Options:
  -v, --version            output the version number
  -h, --help               output usage information

Commands:
  upload-events [options]  Upload user_events into Sana Web API
  upload-assets [options]  Upload assets into Sana Web API
  upload-views [options]   Upload views into Sana Web API
```

For each data type the json file should be as follows, where `UserEventObject`, `AssetObject` and `ViewObject` are defined in the [API documentation](http://developer.sanalabs.com).

### `upload-events`

```
{
  "user_events": [ UserEventObject, ... ]
}
```

### `upload-assets`

```
{
  "assets": [ AssetObject, ... ]
}
```

### `upload-views`

```
{
  "views": [ ViewObject, ... ]
}
```

## Full example

```
sana upload-assets --json-file content.json --api-key $API_KEY
sana upload-views --json-file content.json --api-key $API_KEY
```

`content.json`:

```json
{
  "assets": [
    {
      "id": "asset_1",
      "type": "exercise"
    },
    {
      "id": "asset_2",
      "type": "exercise"
    },
    {
      "id": "asset_3",
      "type": "exercise"
    },
    {
      "id": "asset_4",
      "type": "exercise"
    }
  ],
  "views": [
    {
      "id": "view_1",
      "name": "Course 1",
      "items": [
        {
          "asset_id": "asset_1",
          "path": "/section_1",
          "attributes": {
            "partner_difficulty": 0.0
          }
        },
        {
          "asset_id": "asset_2",
          "path": "/section_1",
          "attributes": {
            "partner_difficulty": 0.33
          }
        },
        {
          "asset_id": "asset_3",
          "path": "/section_2",
          "attributes": {
            "partner_difficulty": 0.66
          }
        },
        {
          "asset_id": "asset_4",
          "path": "/section_2",
          "attributes": {
            "partner_difficulty": 1.0
          }
        }
      ]
    }
  ]
}
```

```sh
sana upload-events --json-file events.json --api-key $API_KEY
```

`events.json`:

```json
{
  "user_events": [
    {
      "user": {
        "id": "user_1",
        "type": "tester"
      },
      "type": "response_submit",
      "timestamp": "2019-06-25T21:59:53.740Z",
      "is_offline_event": true,
      "attributes": {
        "view_id": "view_1",
        "asset_id": "asset_1",
        "result": "correct",
        "score": 1,
        "time_spent_ms": 60000
      }
    }
  ]
}
```

## Requirements

Node.js v10 or later.

## Develop and deploy

Publish new version:

```
npm version 1.2.3 # or manually update package.json and set git tag
git push --follow-tags
```

GitLab CI will automatically test and publish the package. See `.gitlab-ci.yml`.