/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as azExt from 'az-ext'; import * as which from 'which'; import * as loc from '../localizedConstants'; export class NoAzureCLIError extends Error implements azExt.ErrorWithLink { constructor() { super(loc.noAzureCLI); } public get messageWithLink(): string { return loc.noAzureCLI; } } export class NoAzureCLIArcExtError extends Error implements azExt.ErrorWithLink { constructor() { super(loc.arcdataExtensionNotInstalled); } public get messageWithLink(): string { return loc.arcdataExtensionNotInstalled; } } /** * Searches for the first instance of the specified executable in the PATH environment variable * @param exe The executable to search for */ export function searchForCmd(exe: string): Promise { // Note : This is separated out to allow for easy test stubbing return new Promise((resolve, reject) => which(exe, (err, path) => err ? reject(err) : resolve(path))); } /** * Gets the message to display for a given error object that may be a variety of types. * @param error The error object */ export function getErrorMessage(error: any): string { return error.message ?? error; }