azcli-npm
TypeScript icon, indicating that this package has built-in type declarations

1.1.7 • Public • Published

azcli-npm

node module wrapper around azure cli 2.x

npm

Install

npm i -S azcli-npm

Usage

Basic usage and CLI version reporting

import azcli from 'azcli-npm'
 
var cli = new azcli()
console.log(cli.getAzCliVersion())

Set configuration property overrides

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

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

import azcli from 'azcli-npm';
 
var cli = new azcli()
cli.loginWithCert('<tenant-id>', '<service-id>','<cert-path>')
cli.logout()

Set Subscription

import azcli from 'azcli-npm';
 
var cli = new azcli()
cli.login(...)
   .setSubscription('<subscription-name>')
   .logout()

List VMs via json object

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

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

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

License

MIT

Dependents (1)

Package Sidebar

Install

npm i azcli-npm

Weekly Downloads

300

Version

1.1.7

License

MIT

Unpacked Size

60.9 kB

Total Files

16

Last publish

Collaborators

  • pipelinehchb
  • hchb_whilke