Skip to content

Commit a367e97

Browse files
authored
Update winget package identifiers and package identifier retrieval. Closes #300 (#318)
1 parent 3d25b5f commit a367e97

File tree

4 files changed

+63
-11
lines changed

4 files changed

+63
-11
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2626

2727
- Snippets: All snippets that reference schemas updated to use `v1.0.0` schema
2828
- Commands: `dev-proxy-toolkit.config-new` now creates the configuration file in the `.devproxy` folder and creates the folder if it does not exist
29+
- Install: Updated winget package identifiers
2930

3031
### Fixed:
3132

src/commands.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
11
import * as vscode from 'vscode';
22
import { pluginDocs } from './constants';
3-
import { VersionPreference } from './enums';
4-
import { executeCommand, isConfigFile, openUpgradeDocumentation, upgradeDevProxyWithPackageManager, getASTNode, getRangeFromASTNode } from './helpers';
3+
import {
4+
PackageManager,
5+
VersionPreference,
6+
} from './enums';
7+
import { executeCommand, getPackageIdentifier, isConfigFile, openUpgradeDocumentation, upgradeDevProxyWithPackageManager, getASTNode, getRangeFromASTNode } from './helpers';
58
import { isDevProxyRunning, getDevProxyExe } from './detect';
69
import parse from 'json-to-ast';
710

811
export const registerCommands = (context: vscode.ExtensionContext, configuration: vscode.WorkspaceConfiguration) => {
912
const versionPreference = configuration.get('version') as VersionPreference;
10-
const devProxyExe = getDevProxyExe(configuration.get('version') as VersionPreference);
13+
const devProxyExe = getDevProxyExe(versionPreference);
1114

1215
context.subscriptions.push(
1316
vscode.commands.registerCommand('dev-proxy-toolkit.install', async (platform: NodeJS.Platform) => {
1417
const message = vscode.window.setStatusBarMessage('Installing Dev Proxy...');
1518

1619
// we are on windows so we can use winget
1720
if (platform === 'win32') {
18-
const id = versionPreference === VersionPreference.Stable ? 'Microsoft.DevProxy' : 'Microsoft.DevProxy.Beta';
21+
const id = getPackageIdentifier(versionPreference, PackageManager.Winget);
1922
// we first need to check if winget is installed, it is bundled with windows 11 but not windows 10
2023
try {
2124
await executeCommand('winget --version');
@@ -38,7 +41,7 @@ export const registerCommands = (context: vscode.ExtensionContext, configuration
3841

3942
// we are on macos so we can use brew
4043
if (platform === 'darwin') {
41-
const id = versionPreference === VersionPreference.Stable ? 'dev-proxy' : 'dev-proxy-beta';
44+
const id = getPackageIdentifier(versionPreference, PackageManager.Homebrew);
4245
// check if brew is installed
4346
try {
4447
await executeCommand('brew --version');
@@ -187,7 +190,12 @@ export const registerCommands = (context: vscode.ExtensionContext, configuration
187190

188191
// Handle Windows
189192
if (platform === 'win32') {
190-
const packageId = versionPreference === VersionPreference.Stable ? 'Microsoft.DevProxy' : 'Microsoft.DevProxy.Beta';
193+
const packageId = getPackageIdentifier(versionPreference, PackageManager.Winget);
194+
if (!packageId) {
195+
openUpgradeDocumentation();
196+
return;
197+
}
198+
191199
const upgradeCommand = `winget upgrade ${packageId} --silent`;
192200
const isBeta = versionPreference === VersionPreference.Beta;
193201

@@ -200,7 +208,12 @@ export const registerCommands = (context: vscode.ExtensionContext, configuration
200208

201209
// Handle macOS
202210
if (platform === 'darwin') {
203-
const packageId = versionPreference === VersionPreference.Stable ? 'dev-proxy' : 'dev-proxy-beta';
211+
const packageId = getPackageIdentifier(versionPreference, PackageManager.Homebrew);
212+
if (!packageId) {
213+
openUpgradeDocumentation();
214+
return;
215+
}
216+
204217
const upgradeCommand = `brew upgrade ${packageId}`;
205218
const isBeta = versionPreference === VersionPreference.Beta;
206219

src/enums.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,21 @@ export enum VersionPreference {
44
}
55

66
export enum VersionExeName {
7-
Stable = 'devproxy',
8-
Beta = 'devproxy-beta',
9-
}
7+
Stable = 'devproxy',
8+
Beta = 'devproxy-beta',
9+
}
10+
11+
export enum WingetPackageIdentifier {
12+
Stable = 'DevProxy.DevProxy',
13+
Beta = 'DevProxy.DevProxy.Beta',
14+
}
15+
16+
export enum HomebrewPackageIdentifier {
17+
Stable = 'devproxy',
18+
Beta = 'devproxy-beta',
19+
}
20+
21+
export enum PackageManager {
22+
Winget,
23+
Homebrew,
24+
}

src/helpers.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
import * as vscode from 'vscode';
22
import parse from 'json-to-ast';
3-
import { exec, ExecOptions } from 'child_process';
3+
import {exec, ExecOptions} from 'child_process';
4+
import {
5+
HomebrewPackageIdentifier,
6+
PackageManager,
7+
VersionPreference,
8+
WingetPackageIdentifier,
9+
} from './enums';
410

511
export const getASTNode = (
612
children: parse.PropertyNode[],
@@ -204,3 +210,20 @@ export const openUpgradeDocumentation = () => {
204210
const url = 'https://aka.ms/devproxy/upgrade';
205211
vscode.env.openExternal(vscode.Uri.parse(url));
206212
};
213+
214+
export const getPackageIdentifier = (
215+
versionPreference: VersionPreference,
216+
packageManager: PackageManager,
217+
): string | undefined => {
218+
if (packageManager === PackageManager.Homebrew) {
219+
return versionPreference === VersionPreference.Stable
220+
? HomebrewPackageIdentifier.Stable
221+
: HomebrewPackageIdentifier.Beta;
222+
}
223+
224+
if (packageManager === PackageManager.Winget) {
225+
return versionPreference === VersionPreference.Stable
226+
? WingetPackageIdentifier.Stable
227+
: WingetPackageIdentifier.Beta;
228+
}
229+
};

0 commit comments

Comments
 (0)