# NERU-SDK

[![npm version](https://img.shields.io/npm/v/sdk-name.svg)](https://www.npmjs.com/package/neru-alpha)
[![Coverage Status](https://coveralls.io/repos/github/your-username/sdk-name/badge.svg?branch=master)](https://coveralls.io/github/your-username/sdk-name?branch=master)


## Table of Contents
- [About](#about)
- [Installation](#installation)
- [Development](#development)
  - [Pre-Requisites](#pre-requisites)
  - [Branching](#branching)
  - [Build](#build)  
- [Generating SDKs from the source code](#generating-sdks-from-the-source-code)
  - [Pre-Requisites](#pre-requisites-1)
  - [Python SDK](#python-sdk)
  - [C# SDK](#c-sdk)
- [Releasing](#releasing)

## About

A Node.js SDK for NeRu platform for interacting with Vonage API.

To get started, please visit [our documentation](https://vonage-neru.herokuapp.com/neru/overview).

<br>

## Installation

```bash
npm install neru-alpha --save
```

# Development

### Pre-Requisites
- Node.js 14x or higher
- NPM 6x or higher
- Git

Clone the repository and install the dependencies.

```bash
git clone git@github.com:nexmoinc/neru-sdk.git

cd neru-sdk/nodejs

npm install
```

## Branching

This project follows the [Git Flow](https://nvie.com/posts/a-successful-git-branching-model/) branching model. The `master` branch always reflects a production-ready state while the latest development is taking place in the `develop` branch.

To contribute to the project, create a new feature branch off of the `develop` branch and merge back into `develop` when complete. Do not merge directly into `master`.

Hot fixes should be created as a branch off of `master` and merged into both `master` and `develop`.

Branch naming convention: `<jira-task-id>__<short-description>`

## Build
To build the project, run the following command:
```bash
cd nodejs

npm run build
```

It will generate the SDK in the `nodejs/dist` folder.
```
📦dist
 ┣ 📂cjs          # CommonJS build
 ┃ ┗ neru.js     # Entry point
 ┗ 📂esm          # ES Module build
 ┃ ┗ neru.js     # Entry point
```



## Generating SDKs from the source code

### Pre-Requisites
- [neru-transpiler](https://github.com/nexmoinc/neru-transpiler)

### Python SDK
To generate the Python SDK, run the following command:
```bash
pilo -l=python --input=nodejs/src --output=python/src --ignore='nodejs/src/bridge.ts' --namespace=nerualpha --clean=true

cp templates/python/* python/src/nerualpha
```

### C# SDK
To generate the C# SDK, run the following command:
```bash
pilo -l=csharp --input=nodejs/src --output=dotnet --ignore='nodejs/src/bridge.ts' --namespace=Vonage.Neru --clean=true

cp templates/dotnet/* dotnet/Vonage.Neru
```

## Releasing
- Create a release branch from `develop` branch, e.g `release/v1.0.0`
- Run tests locally by typing `npm test` in the nodejs folder
- Generate Python SDK by running `npm run generate:python`. This will generate the Python SDK from nodejs src code and copy it to the `python` folder
   - Test the Python SDK by running smoke tests against the source code
- Bump package version in nodejs and python SDKs manually or by running `npm bumpVersion:[ major | minor | patch ]` (requires `python3, pip3, bumpver`)
- Update `CHANGELOG.md` in nodejs folder
- Create a new release from the [repository](https://github.com/nexmoinc/neru-sdk/releases)
   - Specify the tag name which is the version number e.g `v1.0.0`
   - Add a release title e.g `v1.0.0`
   - Add a description for the release
   - Publish the release. This will create a new release on GitHub and starts the release process using GitHub Actions for both nodejs and python SDKs