private run()

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);
        }
    }