in src/extension.ts [176:211]
private run(source: TextEditor) {
this.refreshContinuationCharacter();
const command = this.getSelectedCommand(source);
if (command.length > 0) {
this.runningCommandCount += 1;
const t0 = Date.now();
if (this.runningCommandCount === 1) {
this.statusBarItemText = `Azure CLI: Waiting for response`;
this.statusBarUpdateInterval = setInterval(() => {
if (this.runningCommandCount === 1) {
this.commandRunningStatusBarItem.text = `${this.statusBarItemText} ${this.statusBarSpinner()}`;
}
else {
this.commandRunningStatusBarItem.text = `${this.statusBarItemText} [${this.runningCommandCount}] ${this.statusBarSpinner()}`;
}
}, 50);
}
this.commandRunningStatusBarItem.show();
clearTimeout(this.hideStatusBarItemTimeout);
this.parsedResult = undefined;
this.query = undefined; // TODO
return this.findResultDocument()
.then(document => window.showTextDocument(document, ViewColumn.Two, true))
.then(target => replaceContent(target, JSON.stringify({ 'Running command': command }) + '\n')
.then(() => exec(command))
.then(({ stdout }) => stdout, ({ stdout, stderr }) => JSON.stringify({ stderr, stdout }, null, ' '))
.then(content => replaceContent(target, content)
.then(() => this.parsedResult = JSON.parse(content))
.then(undefined, err => {})
)
.then(() => this.commandFinished(t0))
)
.then(undefined, console.error);
}
}