mirror of
https://github.com/coder/code-server.git
synced 2025-07-24 01:48:22 +08:00

* Update Code to 1.94.2 * Convert from yarn to npm This is to match VS Code. We were already partially using npm for the releases so this is some nice alignment. * Update caniuse-lite This was complaining on every unit test. * Update eslint I was having a bunch of dependency conflicts and eslint seemed to be the culprit so I just removed it and set it up again, since it seems things have changed quite a bit. * Update test dependencies I was getting oom when running the unit tests...updating seems to work. * Remove package.json `scripts` property in release The new pre-install script was being included, which is dev-only. This was always the intent; did not realize jq's merge was recursive. * Remove jest and devDependencies in release as well * Update test extension dependencies This appears to be conflicting with the root dependencies. * Fix playwright exec npm does not let you run binaries like yarn does, as far as I know. * Fix import of server-main.js * Fix several tests by waiting for selectors
137 lines
6.6 KiB
Diff
137 lines
6.6 KiB
Diff
Index: code-server/lib/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.ts
|
|
===================================================================
|
|
--- code-server.orig/lib/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.ts
|
|
+++ code-server/lib/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.ts
|
|
@@ -8,6 +8,7 @@ import { isWeb } from '../../../base/com
|
|
import { isString } from '../../../base/common/types.js';
|
|
import { URI, UriComponents } from '../../../base/common/uri.js';
|
|
import { localize } from '../../../nls.js';
|
|
+import { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';
|
|
import { CommandsRegistry, ICommandService } from '../../../platform/commands/common/commands.js';
|
|
import { IExtensionGalleryService, IExtensionManagementService } from '../../../platform/extensionManagement/common/extensionManagement.js';
|
|
import { ExtensionManagementCLI } from '../../../platform/extensionManagement/common/extensionManagementCLI.js';
|
|
@@ -89,6 +90,11 @@ CommandsRegistry.registerCommand('_remot
|
|
return lines.join('\n');
|
|
});
|
|
|
|
+CommandsRegistry.registerCommand('_remoteCLI.setClipboard', function (accessor: ServicesAccessor, content: string) {
|
|
+ const clipboardService = accessor.get(IClipboardService);
|
|
+ clipboardService.writeText(content);
|
|
+})
|
|
+
|
|
class RemoteExtensionManagementCLI extends ExtensionManagementCLI {
|
|
|
|
private _location: string | undefined;
|
|
Index: code-server/lib/vscode/src/vs/workbench/api/node/extHostCLIServer.ts
|
|
===================================================================
|
|
--- code-server.orig/lib/vscode/src/vs/workbench/api/node/extHostCLIServer.ts
|
|
+++ code-server/lib/vscode/src/vs/workbench/api/node/extHostCLIServer.ts
|
|
@@ -43,7 +43,12 @@ export interface ExtensionManagementPipe
|
|
force?: boolean;
|
|
}
|
|
|
|
-export type PipeCommand = OpenCommandPipeArgs | StatusPipeArgs | OpenExternalCommandPipeArgs | ExtensionManagementPipeArgs;
|
|
+export interface ClipboardPipeArgs {
|
|
+ type: 'clipboard';
|
|
+ content: string;
|
|
+}
|
|
+
|
|
+export type PipeCommand = OpenCommandPipeArgs | StatusPipeArgs | OpenExternalCommandPipeArgs | ExtensionManagementPipeArgs | ClipboardPipeArgs;
|
|
|
|
export interface ICommandsExecuter {
|
|
executeCommand<T>(id: string, ...args: any[]): Promise<T>;
|
|
@@ -105,6 +110,9 @@ export class CLIServerBase {
|
|
case 'extensionManagement':
|
|
returnObj = await this.manageExtensions(data);
|
|
break;
|
|
+ case 'clipboard':
|
|
+ returnObj = await this.clipboard(data);
|
|
+ break;
|
|
default:
|
|
sendResponse(404, `Unknown message type: ${data.type}`);
|
|
break;
|
|
@@ -172,6 +180,10 @@ export class CLIServerBase {
|
|
return await this._commands.executeCommand<string | undefined>('_remoteCLI.getSystemStatus');
|
|
}
|
|
|
|
+ private async clipboard(data: ClipboardPipeArgs): Promise<undefined> {
|
|
+ return await this._commands.executeCommand('_remoteCLI.setClipboard', data.content);
|
|
+ }
|
|
+
|
|
dispose(): void {
|
|
this._server.close();
|
|
|
|
Index: code-server/lib/vscode/src/vs/workbench/contrib/terminal/browser/remoteTerminalBackend.ts
|
|
===================================================================
|
|
--- code-server.orig/lib/vscode/src/vs/workbench/contrib/terminal/browser/remoteTerminalBackend.ts
|
|
+++ code-server/lib/vscode/src/vs/workbench/contrib/terminal/browser/remoteTerminalBackend.ts
|
|
@@ -97,7 +97,7 @@ class RemoteTerminalBackend extends Base
|
|
}
|
|
});
|
|
|
|
- const allowedCommands = ['_remoteCLI.openExternal', '_remoteCLI.windowOpen', '_remoteCLI.getSystemStatus', '_remoteCLI.manageExtensions'];
|
|
+ const allowedCommands = ['_remoteCLI.openExternal', '_remoteCLI.windowOpen', '_remoteCLI.getSystemStatus', '_remoteCLI.manageExtensions', '_remoteCLI.setClipboard'];
|
|
this._remoteTerminalChannel.onExecuteCommand(async e => {
|
|
// Ensure this request for for this window
|
|
const pty = this._ptys.get(e.persistentProcessId);
|
|
Index: code-server/lib/vscode/src/vs/platform/environment/common/argv.ts
|
|
===================================================================
|
|
--- code-server.orig/lib/vscode/src/vs/platform/environment/common/argv.ts
|
|
+++ code-server/lib/vscode/src/vs/platform/environment/common/argv.ts
|
|
@@ -119,6 +119,7 @@ export interface NativeParsedArgs {
|
|
sandbox?: boolean;
|
|
|
|
'enable-coi'?: boolean;
|
|
+ 'stdin-to-clipboard'?: boolean;
|
|
|
|
// chromium command line args: https://electronjs.org/docs/all#supported-chrome-command-line-switches
|
|
'no-proxy-server'?: boolean;
|
|
Index: code-server/lib/vscode/src/vs/platform/environment/node/argv.ts
|
|
===================================================================
|
|
--- code-server.orig/lib/vscode/src/vs/platform/environment/node/argv.ts
|
|
+++ code-server/lib/vscode/src/vs/platform/environment/node/argv.ts
|
|
@@ -90,6 +90,7 @@ export const OPTIONS: OptionDescriptions
|
|
'user-data-dir': { type: 'string', cat: 'o', args: 'dir', description: localize('userDataDir', "Specifies the directory that user data is kept in. Can be used to open multiple distinct instances of Code.") },
|
|
'profile': { type: 'string', 'cat': 'o', args: 'profileName', description: localize('profileName', "Opens the provided folder or workspace with the given profile and associates the profile with the workspace. If the profile does not exist, a new empty one is created.") },
|
|
'help': { type: 'boolean', cat: 'o', alias: 'h', description: localize('help', "Print usage.") },
|
|
+ 'stdin-to-clipboard': { type: 'boolean', cat: 'o', alias: 'c', description: localize('clipboard', "copies the STDIN to the clipboard") },
|
|
|
|
'extensions-dir': { type: 'string', deprecates: ['extensionHomePath'], cat: 'e', args: 'dir', description: localize('extensionHomePath', "Set the root path for extensions.") },
|
|
'extensions-download-dir': { type: 'string' },
|
|
Index: code-server/lib/vscode/src/vs/server/node/server.cli.ts
|
|
===================================================================
|
|
--- code-server.orig/lib/vscode/src/vs/server/node/server.cli.ts
|
|
+++ code-server/lib/vscode/src/vs/server/node/server.cli.ts
|
|
@@ -75,6 +75,7 @@ const isSupportedForPipe = (optionId: ke
|
|
case 'verbose':
|
|
case 'remote':
|
|
case 'locate-shell-integration-path':
|
|
+ case 'stdin-to-clipboard':
|
|
return true;
|
|
default:
|
|
return false;
|
|
@@ -292,6 +293,23 @@ export async function main(desc: Product
|
|
}
|
|
}
|
|
} else {
|
|
+ if (parsedArgs['stdin-to-clipboard']) {
|
|
+ if(!hasStdinWithoutTty()) {
|
|
+ console.error("stdin has a tty.");
|
|
+ return;
|
|
+ }
|
|
+ const fs = require("fs");
|
|
+ const stdinBuffer = fs.readFileSync(0); // STDIN_FILENO = 0
|
|
+ const clipboardContent = stdinBuffer.toString();
|
|
+ sendToPipe({
|
|
+ type: 'clipboard',
|
|
+ content: clipboardContent
|
|
+ }, verbose).catch(e => {
|
|
+ console.error('Error when requesting status:', e);
|
|
+ });
|
|
+ return;
|
|
+ }
|
|
+
|
|
if (parsedArgs.status) {
|
|
sendToPipe({
|
|
type: 'status'
|