# azcli-npm

> node module wrapper around azure cli 2.x

Latest version **1.1.7** (published 2019-03-20) · MIT license · 0 weekly downloads

## Install

```sh
npm install azcli-npm
pnpm add azcli-npm
yarn add azcli-npm
bun add azcli-npm
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.7 |
| Published | 2019-03-20 |
| First published | 2018-11-17 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 59.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | HCHB |
| Maintainers | csperbeckhchb, hchb_whilke |
| Keywords | azure, azcli, az |

## Links

- npm: https://www.npmjs.com/package/azcli-npm
- Repository: https://github.com/HomecareHomebase/azcli-npm
- Homepage: https://github.com/HomecareHomebase/azcli-npm#readme
- Issues: https://github.com/HomecareHomebase/azcli-npm/issues
- npm.io page: https://npm.io/package/azcli-npm

## Dependencies (1)

- [q](https://npm.io/package/q.md) ^1.5.1

## Recent versions

- 1.1.7 (latest) — 2019-03-20
- 1.1.6 — 2019-03-19
- 1.1.4 — 2019-01-08
- 1.1.3 — 2018-12-07
- 1.1.2 — 2018-11-28
- 1.1.1 — 2018-11-27
- 1.1.0 — 2018-11-27
- 1.0.2 — 2018-11-27
- 1.0.1 — 2018-11-27
- 1.0.0 — 2018-11-21
- 0.1.0 — 2018-11-20
- 0.0.2 — 2018-11-20
- 0.0.1 — 2018-11-17

## README

# azcli-npm

> node module wrapper around azure cli 2.x

[![npm](https://img.shields.io/npm/v/azcli-npm.svg)](https://www.npmjs.com/package/azcli-npm)

## Install

```bash
npm i -S azcli-npm
```

## Usage

Basic usage and CLI version reporting

```js
import azcli from 'azcli-npm'

var cli = new azcli()
console.log(cli.getAzCliVersion())
```

Set configuration property overrides

```js
import azcli from 'azcli-npm'

var cli = new azcli(<IAzOptions> {
    minVersion: '2.0.0'
    maxVersion: '2.1'
    ignoreVersion: false
})

console.log(cli.getAzCliVersion())
```

Login with a SP and secret

```js
import azcli from 'azcli-npm';

var cli = new azcli()
cli.login('<tenant-id>', '<service-id>','<service-secret>')
cli.logout()
```

Login with a SP and PEM certificate

```js
import azcli from 'azcli-npm';

var cli = new azcli()
cli.loginWithCert('<tenant-id>', '<service-id>','<cert-path>')
cli.logout()
```

Set Subscription

```js
import azcli from 'azcli-npm';

var cli = new azcli()
cli.login(...)
   .setSubscription('<subscription-name>')
   .logout()
```
List VMs via json object

```js
import azcli from 'azcli-npm';

var cli = new azcli()
var results =
cli.login(...)
   .setSubscription(...)
   .start()
     .arg('vm')
     .arg('list')
   .execJson<any>()

results.forEach(function(element)=>{
    console.log(element.id)
    console.log(element.name)
    console.log(element.location)
})

cli.logout()
```

## Unit test/mocking

If you want to incoroporate this module into your unit tests we provide a built-in mocking system, or you can roll your own.

To roll your own create a class that implements ShellRunner and its constructor. Then just override all the public facing functions

```js
import azcli, { ShellRunner, ShellRunnerType, IExecResults } from 'azcli-npm'

export class MyMock extends ShellRunner {
    constructor(shellPath: string){
        super(shellPath)
    };
}

//Now you can use this class as the shell override type when creating a new cli()
var cli = new azcli(<IAzOptions> {
    shellRunner: MyMock
})
```

You can instead use the built-in mocking system which provides helpers for setting expected response types for commands

```js
import cli, { IAzOptions, IExecResults, 
  MockResponseTypes, MockRunner, MockResponse, MockResponseFunctions} 'azcli-npm'

let options = <IAzOptions>{ shellRunner: MockRunner}
let wrapper = MockResponse(options)

//grab the cli instance injected with MockRunner
let runner = wrapper.cli

//the mr object is used to inject responses before commands are executed
//these functions return the cli instance so you can directly chain off it
let mr = wrapper.mr


//now you can assign response objects before calling commands

//this will be the result for the setSubscription() call
mr.AddMockResponse( MockResponseTypes.justReturnCode ) //-> returns wrapper.cli
  .setSubscription('subscription with space')

//this creates a custom result for the 'webapp list' cmd after
 let results = 
    mr.AddResponse(<IExecResults>{
        code: 0, 
        stdout: JSON.stringify([{id: '/id'}]) 
    }) // -> returns wrapper.cli so we can chain from it
    .start()
        .arg('webapp')
        .arg('list')
    .execJson<any>()

console.log(results[0].id)

//You can also use this without chaining if you have commands pre-wrapped
mr.AddMockResponse( MockResponseTypes.justReturnCode )
mr.AddMockResponse( MockResponseTypes.justReturnCode )

//this chain will consume the two mock responses above
runner.login(...)
      .setSubscription(...)

```


## Contributing

[Contribution Guide](./CONTRIBUTING.md)

## License

[MIT](./LICENSE)

---
_Source: https://npm.io/package/azcli-npm · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
