forked from microsoft/vscode-dapr
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update Dapr CLI/runtime version validation (microsoft#183)
* Refactor installation managment. * Switch to welcome views for installation issues. * Implement install Dapr command. * Enforce initialized Dapr on task invocation. * Consolidate button handling and CLI testing. * Rework logic a bit. * Updates per PR feedback.
- Loading branch information
1 parent
6aea135
commit 6494b97
Showing
12 changed files
with
11,445 additions
and
146 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
// Copyright (c) Microsoft Corporation. | ||
// Licensed under the MIT license. | ||
|
||
import { UserInput } from '../../services/userInput'; | ||
|
||
export function installDapr(ui: UserInput): Thenable<boolean> { | ||
return ui.openExternal('https://aka.ms/vscode-dapr-install-dapr'); | ||
} | ||
|
||
const createInstallDaprCommand = (ui: UserInput) => (): Thenable<boolean> => installDapr(ui); | ||
|
||
export default createInstallDaprCommand; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
// Copyright (c) Microsoft Corporation. | ||
// Licensed under the MIT license. | ||
|
||
import CommandLineBuilder from "../util/commandLineBuilder"; | ||
import { Process } from "../util/process"; | ||
import * as nls from 'vscode-nls'; | ||
import { getLocalizationPathForFile } from '../util/localization'; | ||
|
||
const localize = nls.loadMessageBundle(getLocalizationPathForFile(__filename)); | ||
|
||
export interface DaprVersion { | ||
cli: string | undefined; | ||
runtime: string | undefined; | ||
} | ||
|
||
export interface DaprCliClient { | ||
version(): Promise<DaprVersion>; | ||
} | ||
|
||
export default class LocalDaprCliClient implements DaprCliClient { | ||
constructor(private readonly daprPathProvider: () => string) { | ||
} | ||
|
||
async version(): Promise<DaprVersion> { | ||
const daprPath = this.daprPathProvider(); | ||
const command = | ||
CommandLineBuilder | ||
.create(daprPath, '--version') | ||
.build(); | ||
|
||
const result = await Process.exec(command); | ||
|
||
if (result.code !== 0) { | ||
throw new Error(localize('services.daprCliClient.versionFailed', 'Retrieving the dapr CLI version failed: {0}', result.stderr)); | ||
} | ||
|
||
const cliMatch = /^CLI version: (?<version>.+)$/gm.exec(result.stdout); | ||
const runtimeMatch = /^Runtime version: (?<version>.+)$/gm.exec(result.stdout); | ||
|
||
return { | ||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
cli: cliMatch ? cliMatch.groups!['version'] : undefined, | ||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
runtime: runtimeMatch ? runtimeMatch.groups!['version'] : undefined | ||
} | ||
} | ||
} |
Oops, something went wrong.