@sanalabs/cli

Sana CLI

Usage no npm install needed!

<script type="module">
  import sanalabsCli from 'https://cdn.skypack.dev/@sanalabs/cli';
</script>

README

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.

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:

{
  "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
          }
        }
      ]
    }
  ]
}
sana upload-events --json-file events.json --api-key $API_KEY

events.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.