-
Notifications
You must be signed in to change notification settings - Fork 51
Add port provider #85
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 5 commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
877fe43
Add port attribute provider
paulacamargo25 d5e3828
Add message
paulacamargo25 fc9630d
Enabled proposed api
paulacamargo25 9a33a6e
Ignore all the ports
paulacamargo25 49c36f6
Fix format
paulacamargo25 2aa0a48
fix pr comments
paulacamargo25 9e25e3e
Add regex for terminal command
paulacamargo25 79f3914
Add adapter to pattern
paulacamargo25 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or 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
20 changes: 20 additions & 0 deletions
20
src/extension/debugger/debugPort/portAttributesProvider.ts
This file contains hidden or 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,20 @@ | ||
/*--------------------------------------------------------- | ||
* Copyright (C) Microsoft Corporation. All rights reserved. | ||
*--------------------------------------------------------*/ | ||
|
||
import { | ||
CancellationToken, | ||
PortAttributes, | ||
PortAttributesProvider, | ||
PortAutoForwardAction, | ||
ProviderResult, | ||
} from 'vscode'; | ||
|
||
export class DebugPortAttributesProvider implements PortAttributesProvider { | ||
public providePortAttributes( | ||
_attributes: { port: number; pid?: number; commandLine?: string }, | ||
_token: CancellationToken, | ||
): ProviderResult<PortAttributes> { | ||
return new PortAttributes(PortAutoForwardAction.Ignore); | ||
} | ||
} |
This file contains hidden or 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 hidden or 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,100 @@ | ||
/*--------------------------------------------------------------------------------------------- | ||
* Copyright (c) Microsoft Corporation. All rights reserved. | ||
* Licensed under the MIT License. See License.txt in the project root for license information. | ||
*--------------------------------------------------------------------------------------------*/ | ||
|
||
declare module 'vscode' { | ||
|
||
// https://github.com/microsoft/vscode/issues/115616 @alexr00 | ||
|
||
/** | ||
* The action that should be taken when a port is discovered through automatic port forwarding discovery. | ||
*/ | ||
export enum PortAutoForwardAction { | ||
/** | ||
* Notify the user that the port is being forwarded. This is the default action. | ||
*/ | ||
Notify = 1, | ||
/** | ||
* Once the port is forwarded, open the user's web browser to the forwarded port. | ||
*/ | ||
OpenBrowser = 2, | ||
/** | ||
* Once the port is forwarded, open the preview browser to the forwarded port. | ||
*/ | ||
OpenPreview = 3, | ||
/** | ||
* Forward the port silently. | ||
*/ | ||
Silent = 4, | ||
/** | ||
* Do not forward the port. | ||
*/ | ||
Ignore = 5 | ||
} | ||
|
||
/** | ||
* The attributes that a forwarded port can have. | ||
*/ | ||
export class PortAttributes { | ||
/** | ||
* The action to be taken when this port is detected for auto forwarding. | ||
*/ | ||
autoForwardAction: PortAutoForwardAction; | ||
|
||
/** | ||
* Creates a new PortAttributes object | ||
* @param port the port number | ||
* @param autoForwardAction the action to take when this port is detected | ||
*/ | ||
constructor(autoForwardAction: PortAutoForwardAction); | ||
} | ||
|
||
/** | ||
* A provider of port attributes. Port attributes are used to determine what action should be taken when a port is discovered. | ||
*/ | ||
export interface PortAttributesProvider { | ||
/** | ||
* Provides attributes for the given port. For ports that your extension doesn't know about, simply | ||
* return undefined. For example, if `providePortAttributes` is called with ports 3000 but your | ||
* extension doesn't know anything about 3000 you should return undefined. | ||
* @param port The port number of the port that attributes are being requested for. | ||
* @param pid The pid of the process that is listening on the port. If the pid is unknown, undefined will be passed. | ||
* @param commandLine The command line of the process that is listening on the port. If the command line is unknown, undefined will be passed. | ||
* @param token A cancellation token that indicates the result is no longer needed. | ||
*/ | ||
providePortAttributes(attributes: { port: number; pid?: number; commandLine?: string }, token: CancellationToken): ProviderResult<PortAttributes>; | ||
} | ||
|
||
/** | ||
* A selector that will be used to filter which {@link PortAttributesProvider} should be called for each port. | ||
*/ | ||
export interface PortAttributesSelector { | ||
/** | ||
* Specifying a port range will cause your provider to only be called for ports within the range. | ||
* The start is inclusive and the end is exclusive. | ||
*/ | ||
portRange?: [number, number] | number; | ||
|
||
/** | ||
* Specifying a command pattern will cause your provider to only be called for processes whose command line matches the pattern. | ||
*/ | ||
commandPattern?: RegExp; | ||
} | ||
|
||
export namespace workspace { | ||
/** | ||
* If your extension listens on ports, consider registering a PortAttributesProvider to provide information | ||
* about the ports. For example, a debug extension may know about debug ports in it's debuggee. By providing | ||
* this information with a PortAttributesProvider the extension can tell the editor that these ports should be | ||
* ignored, since they don't need to be user facing. | ||
* | ||
* The results of the PortAttributesProvider are merged with the user setting `remote.portsAttributes`. If the values conflict, the user setting takes precedence. | ||
* | ||
* @param portSelector It is best practice to specify a port selector to avoid unnecessary calls to your provider. | ||
* If you don't specify a port selector your provider will be called for every port, which will result in slower port forwarding for the user. | ||
* @param provider The {@link PortAttributesProvider PortAttributesProvider}. | ||
*/ | ||
export function registerPortAttributesProvider(portSelector: PortAttributesSelector, provider: PortAttributesProvider): Disposable; | ||
} | ||
} |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.