npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

azcli-npm

v1.1.7

Published

node module wrapper around azure cli 2.x

Downloads

1,536

Readme

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