Skip to content

Commit 4714906

Browse files
authored
Merge branch 'main' into tyriar/188173_term_selection
2 parents 49df64f + d1177d5 commit 4714906

File tree

225 files changed

+6339
-4063
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

225 files changed

+6339
-4063
lines changed

.vscode/settings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
"files.readonlyInclude": {
3737
"**/node_modules/**": true,
3838
"**/yarn.lock": true,
39+
"**/Cargo.lock": true,
3940
"src/vs/workbench/workbench.web.main.css": true,
4041
"src/vs/workbench/workbench.desktop.main.css": true,
4142
"src/vs/workbench/workbench.desktop.main.nls.js": true,

.yarnrc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
disturl "https://electronjs.org/headers"
2-
target "22.3.14"
3-
ms_build_id "21893604"
2+
target "22.3.17"
3+
ms_build_id "22432899"
44
runtime "electron"
55
build_from_source "true"

build/checksums/electron.txt

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
1-
3ba067c6f338f9a525c4b697e9cf8e3c3b3d9f6abfdfb11fba47e053da0f3496 *electron-v22.3.14-darwin-arm64-symbols.zip
2-
c08bf19e11c006346b210585cf0803cd0b07107a362a2414cc185f6a228afbf2 *electron-v22.3.14-darwin-arm64.zip
3-
72ced94e7230d3138dd84acbf38dc593d4a93ec796a3a478f99aa6974030d79c *electron-v22.3.14-darwin-x64-symbols.zip
4-
77c1c96411326b00d3ef7c9f6af96a3b4c2fa2314196fce3374fcf734dd8dc67 *electron-v22.3.14-darwin-x64.zip
5-
d847c59f3835749dcdd5376daefb3a5992f1ed5d7693f871328296e1388fb69d *electron-v22.3.14-linux-arm64-symbols.zip
6-
95bb9ee160c60b50ff25b307fb8bc36bdb5297d43c6e366f0b835f36c4f327c9 *electron-v22.3.14-linux-arm64.zip
7-
38a51d81f9ffe6e2ebf25844999fddbeb4edc63ae22136af1502db373bb024ab *electron-v22.3.14-linux-armv7l-symbols.zip
8-
bf589c74f07fe11586ffcf8c122d34b91c5ced08d54532ee883d1e025b6d1b02 *electron-v22.3.14-linux-armv7l.zip
9-
28d0eda61ea736375c549d0955f36b7d3e3c2019453ef83d793dae8b0d74f461 *electron-v22.3.14-linux-x64-symbols.zip
10-
89b72e40fb8b9106deda3e6ffa30dd80beaa8f2e2a9d037b55c034a5a27a7b60 *electron-v22.3.14-linux-x64.zip
11-
b9ba15fcf7c60cf57e95fae731bc0c336e131ed4fac91b4c59d50a28407ca0b0 *electron-v22.3.14-win32-arm64-pdb.zip
12-
9f375d01feeb9e28f9c0913a4e22be900c0a7ff4e51449bb9b859ce1bd18f9f3 *electron-v22.3.14-win32-arm64-symbols.zip
13-
17e354aca0683f79d79f7fa7ecfa8a4381b356d04fa45ec0aa85b5f048151c10 *electron-v22.3.14-win32-arm64.zip
14-
900ca316ce939547ab62847c8833a78c1002a69b936be7e9af328a3518a7d379 *electron-v22.3.14-win32-ia32-pdb.zip
15-
90af7a48b4e722a3436b6a8893540fb746d99b4832ca48c355a63fa0930f6446 *electron-v22.3.14-win32-ia32-symbols.zip
16-
487d811c7cf3282f4c3a17b5ab7ab1fd71dbc585449d77da3a9bf052657ac4ad *electron-v22.3.14-win32-ia32.zip
17-
41ce6c3d87c89f6b48aac74649657a120c28c78513908996dc20e57a640d4653 *electron-v22.3.14-win32-x64-pdb.zip
18-
57b35bfa186b64a9dd1eb2bb85141bb998d0378bb20ac8038718b41d16deb978 *electron-v22.3.14-win32-x64-symbols.zip
19-
f45eba3faa7e10fb1c6e5cf044dd42733a7c8cb455de57647b74e7510b0b94b6 *electron-v22.3.14-win32-x64.zip
20-
16a75de6e3e4643589237e6e1c680c43b4e77fe04918bfbe4408775b7e616afc *ffmpeg-v22.3.14-darwin-arm64.zip
21-
92db0c163c326d33a516ebfc56c7bd4faae9456f4238dde916c580b459b8dc8d *ffmpeg-v22.3.14-darwin-x64.zip
22-
59d2e2b2f2cc515a86a4e0cfd1116d10a8b25a8d58d45bb04de3512e156c944b *ffmpeg-v22.3.14-linux-arm64.zip
23-
b9d3b227bee17666d395ee7882ef477a733c3eeef3f1d9f2e3616d2d02eb3376 *ffmpeg-v22.3.14-linux-armv7l.zip
24-
fa07ef910b23a4ef4b6761bc16d20c0e70ff0259325c4d523129e2d9c5084174 *ffmpeg-v22.3.14-linux-x64.zip
25-
7f744b657ae7c26f80cae0f2771a00edd368350229b85118a246573987dd6ff1 *ffmpeg-v22.3.14-win32-arm64.zip
26-
562e04d2cf1c970b6128d66d08dfe8d88a28e54adf599293eee2bd6c292fd16b *ffmpeg-v22.3.14-win32-ia32.zip
27-
f69510384ef912fd9b4961f97357789a4a36e8df6ff382aeeab23fbb063def9a *ffmpeg-v22.3.14-win32-x64.zip
1+
9ba54e68520fe94b15ab6224333f5e63538f78aa0356545130ac06e308b54a72 *electron-v22.3.17-darwin-arm64-symbols.zip
2+
37aa86e637c1306aa0e7b382d3d3d23717ac4769114f00f5abd98a7b95a97a00 *electron-v22.3.17-darwin-arm64.zip
3+
bfd7ffb2a4b2fa8f47a72ea35340c51b21bc3f0f6e85679e48eb30615110e7dd *electron-v22.3.17-darwin-x64-symbols.zip
4+
87e063025bfd11b60cbb637ecf077dc52d53ba5ac76b828ab06a8c5a66b0b590 *electron-v22.3.17-darwin-x64.zip
5+
1e885e3e10fc952e7c898b91fe0b327147d5ba2effa291a8dff63b84ed6f7f09 *electron-v22.3.17-linux-arm64-symbols.zip
6+
d810449d93ddbe7ec81b3792dc4c7237c7ad52e03d15503316029afe95281ef6 *electron-v22.3.17-linux-arm64.zip
7+
b1112192a53388754fc55018f1f5f116cd342d78cc2beedcd115f313c669975e *electron-v22.3.17-linux-armv7l-symbols.zip
8+
647f375119b8611d9a6ec6b4837c246f2e02d6b5ac75eb21a7a0e8bd07717cc6 *electron-v22.3.17-linux-armv7l.zip
9+
8d4c2743c8a8b4b48364bd27e05eb4e1d22b46ed93c978646fad37def2047722 *electron-v22.3.17-linux-x64-symbols.zip
10+
030c540a88998112f8848f2ecc1429790bb90a19f1826eda0b4e89d2b6e2459c *electron-v22.3.17-linux-x64.zip
11+
afa64d9f5523564d48a77c5e53f9ffdf9b9f144bd4ccf55577a8aa1532e7f5d8 *electron-v22.3.17-win32-arm64-pdb.zip
12+
fd8dc02edf2b7120d9b79e06701001d192dc0007503961769bda3e680ad9cbc2 *electron-v22.3.17-win32-arm64-symbols.zip
13+
80dc7fd40f47832757fb150b63cf3a6d14aad3d64b4891a7a3e2785bd4c98f2d *electron-v22.3.17-win32-arm64.zip
14+
e30077316165162d8954e7af1bb0e3454587efb82c26a65269b0e5a0237a739e *electron-v22.3.17-win32-ia32-pdb.zip
15+
feb05e2ee1555de1721b93613db52a4b42f3caa287b28b5e0918dee7d1d321ca *electron-v22.3.17-win32-ia32-symbols.zip
16+
221e988045f9fd299bb00b27cdde31a7a6621a40cea3ad34efe584e988046766 *electron-v22.3.17-win32-ia32.zip
17+
295c820c5f47ad02bdd5f23d5071ff551e14aa3b018a4daff4cb9b18694862a1 *electron-v22.3.17-win32-x64-pdb.zip
18+
4fe6e8f71fe7ade774ff92a5f3dbb3d667185da3c4be10cf6ade5e2700e32cc6 *electron-v22.3.17-win32-x64-symbols.zip
19+
9a3847ff2a2702a62b66a309368f7feced29294168155de6271d1409191441bf *electron-v22.3.17-win32-x64.zip
20+
b1d258f2378b326d52ba1b4dbd55d49b8190e23ef00d3ccdec9407114242a8d8 *ffmpeg-v22.3.17-darwin-arm64.zip
21+
7ad943f4bacff4379b751fd64db85adb68c2a0456c0fe4fe3d0eb2c50257bccf *ffmpeg-v22.3.17-darwin-x64.zip
22+
59d2e2b2f2cc515a86a4e0cfd1116d10a8b25a8d58d45bb04de3512e156c944b *ffmpeg-v22.3.17-linux-arm64.zip
23+
b9d3b227bee17666d395ee7882ef477a733c3eeef3f1d9f2e3616d2d02eb3376 *ffmpeg-v22.3.17-linux-armv7l.zip
24+
fa07ef910b23a4ef4b6761bc16d20c0e70ff0259325c4d523129e2d9c5084174 *ffmpeg-v22.3.17-linux-x64.zip
25+
a83e1314a9161ebf7ffae9c67bb9332f231f3b82e6ffb68de4704dd81489301c *ffmpeg-v22.3.17-win32-arm64.zip
26+
725b025bbe8664733c5e5d6ee5d2baa36acabd415e0fbd21b056de968a1fe2cd *ffmpeg-v22.3.17-win32-ia32.zip
27+
e4c76b9bb3826e8b56c720220cff0bd1fa1a34e69a26617cd3650bda452bff71 *ffmpeg-v22.3.17-win32-x64.zip

build/lib/stylelint/vscode-known-variables.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,6 @@
316316
"--vscode-inlineChatInput-border",
317317
"--vscode-inlineChatInput-focusBorder",
318318
"--vscode-inlineChatInput-placeholderForeground",
319-
"--vscode-inlineChatrDiff-removed",
320319
"--vscode-input-background",
321320
"--vscode-input-border",
322321
"--vscode-input-foreground",

cgmanifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -528,12 +528,12 @@
528528
"git": {
529529
"name": "electron",
530530
"repositoryUrl": "https://github.com/electron/electron",
531-
"commitHash": "4ade2a6fb65e4b723feb7c09a5df765e5006b378"
531+
"commitHash": "047fdbf3ca1958e4e489f0e777bf4022540f5ec2"
532532
}
533533
},
534534
"isOnlyProductionDependency": true,
535535
"license": "MIT",
536-
"version": "22.3.14"
536+
"version": "22.3.17"
537537
},
538538
{
539539
"component": {

cli/src/bin/code/main.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,9 @@ async fn main() -> Result<(), std::convert::Infallible> {
9595
args::VersionSubcommand::Show => version::show(context!()).await,
9696
},
9797

98-
Some(args::Commands::CommandShell) => tunnels::command_shell(context!()).await,
98+
Some(args::Commands::CommandShell(cs_args)) => {
99+
tunnels::command_shell(context!(), cs_args).await
100+
}
99101

100102
Some(args::Commands::Tunnel(tunnel_args)) => match tunnel_args.subcommand {
101103
Some(args::TunnelSubcommand::Prune) => tunnels::prune(context!()).await,

cli/src/commands/args.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,14 @@ pub enum Commands {
174174

175175
/// Runs the control server on process stdin/stdout
176176
#[clap(hide = true)]
177-
CommandShell,
177+
CommandShell(CommandShellArgs),
178+
}
179+
180+
#[derive(Args, Debug, Clone)]
181+
pub struct CommandShellArgs {
182+
/// Listen on a socket instead of stdin/stdout.
183+
#[clap(long)]
184+
pub on_socket: bool,
178185
}
179186

180187
#[derive(Args, Debug, Clone)]
@@ -548,6 +555,7 @@ pub enum OutputFormat {
548555
#[derive(Args, Clone, Debug, Default)]
549556
pub struct ExistingTunnelArgs {
550557
/// Name you'd like to assign preexisting tunnel to use to connect the tunnel
558+
/// Old option, new code sohuld just use `--name`.
551559
#[clap(long, hide = true)]
552560
pub tunnel_name: Option<String>,
553561

cli/src/commands/tunnels.rs

Lines changed: 75 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,22 @@
55

66
use async_trait::async_trait;
77
use base64::{engine::general_purpose as b64, Engine as _};
8+
use futures::{stream::FuturesUnordered, StreamExt};
89
use serde::Serialize;
910
use sha2::{Digest, Sha256};
1011
use std::{str::FromStr, time::Duration};
1112
use sysinfo::Pid;
1213

1314
use super::{
1415
args::{
15-
AuthProvider, CliCore, ExistingTunnelArgs, TunnelRenameArgs, TunnelServeArgs,
16-
TunnelServiceSubCommands, TunnelUserSubCommands,
16+
AuthProvider, CliCore, CommandShellArgs, ExistingTunnelArgs, TunnelRenameArgs,
17+
TunnelServeArgs, TunnelServiceSubCommands, TunnelUserSubCommands,
1718
},
1819
CommandContext,
1920
};
2021

2122
use crate::{
23+
async_pipe::{get_socket_name, listen_socket_rw_stream, socket_stream_split},
2224
auth::Auth,
2325
constants::{APPLICATION_NAME, TUNNEL_CLI_LOCK_NAME, TUNNEL_SERVICE_LOCK_NAME},
2426
log,
@@ -59,20 +61,31 @@ impl From<AuthProvider> for crate::auth::AuthProvider {
5961
}
6062
}
6163

62-
impl From<ExistingTunnelArgs> for Option<dev_tunnels::ExistingTunnel> {
63-
fn from(d: ExistingTunnelArgs) -> Option<dev_tunnels::ExistingTunnel> {
64-
if let (Some(tunnel_id), Some(tunnel_name), Some(cluster), Some(host_token)) =
65-
(d.tunnel_id, d.tunnel_name, d.cluster, d.host_token)
66-
{
64+
fn fulfill_existing_tunnel_args(
65+
d: ExistingTunnelArgs,
66+
name_arg: &Option<String>,
67+
) -> Option<dev_tunnels::ExistingTunnel> {
68+
let tunnel_name = d.tunnel_name.or_else(|| name_arg.clone());
69+
70+
match (d.tunnel_id, d.cluster, d.host_token) {
71+
(Some(tunnel_id), None, Some(host_token)) => {
72+
let i = tunnel_id.find('.')?;
6773
Some(dev_tunnels::ExistingTunnel {
68-
tunnel_id,
74+
tunnel_id: tunnel_id[..i].to_string(),
75+
cluster: tunnel_id[i + 1..].to_string(),
6976
tunnel_name,
7077
host_token,
71-
cluster,
7278
})
73-
} else {
74-
None
7579
}
80+
81+
(Some(tunnel_id), Some(cluster), Some(host_token)) => Some(dev_tunnels::ExistingTunnel {
82+
tunnel_id,
83+
tunnel_name,
84+
host_token,
85+
cluster,
86+
}),
87+
88+
_ => None,
7689
}
7790
}
7891

@@ -109,23 +122,55 @@ impl ServiceContainer for TunnelServiceContainer {
109122
}
110123
}
111124

112-
pub async fn command_shell(ctx: CommandContext) -> Result<i32, AnyError> {
125+
pub async fn command_shell(ctx: CommandContext, args: CommandShellArgs) -> Result<i32, AnyError> {
113126
let platform = PreReqChecker::new().verify().await?;
114-
serve_stream(
115-
tokio::io::stdin(),
116-
tokio::io::stderr(),
117-
ServeStreamParams {
118-
log: ctx.log,
119-
launcher_paths: ctx.paths,
120-
platform,
121-
requires_auth: true,
122-
exit_barrier: ShutdownRequest::create_rx([ShutdownRequest::CtrlC]),
123-
code_server_args: (&ctx.args).into(),
124-
},
125-
)
126-
.await;
127+
let mut params = ServeStreamParams {
128+
log: ctx.log,
129+
launcher_paths: ctx.paths,
130+
platform,
131+
requires_auth: true,
132+
exit_barrier: ShutdownRequest::create_rx([ShutdownRequest::CtrlC]),
133+
code_server_args: (&ctx.args).into(),
134+
};
127135

128-
Ok(0)
136+
if !args.on_socket {
137+
serve_stream(tokio::io::stdin(), tokio::io::stderr(), params).await;
138+
return Ok(0);
139+
}
140+
141+
let socket = get_socket_name();
142+
let mut listener = listen_socket_rw_stream(&socket)
143+
.await
144+
.map_err(|e| wrap(e, "error listening on socket"))?;
145+
146+
params
147+
.log
148+
.result(format!("Listening on {}", socket.display()));
149+
150+
let mut servers = FuturesUnordered::new();
151+
152+
loop {
153+
tokio::select! {
154+
Some(_) = servers.next() => {},
155+
socket = listener.accept() => {
156+
match socket {
157+
Ok(s) => {
158+
let (read, write) = socket_stream_split(s);
159+
servers.push(serve_stream(read, write, params.clone()));
160+
},
161+
Err(e) => {
162+
error!(params.log, &format!("Error accepting connection: {}", e));
163+
return Ok(1);
164+
}
165+
}
166+
},
167+
_ = params.exit_barrier.wait() => {
168+
// wait for all servers to finish up:
169+
while (servers.next().await).is_some() { }
170+
return Ok(0);
171+
}
172+
}
173+
}
129174
}
130175

131176
pub async fn service(
@@ -412,8 +457,10 @@ async fn serve_with_csa(
412457
let auth = Auth::new(&paths, log.clone());
413458
let mut dt = dev_tunnels::DevTunnels::new(&log, auth, &paths);
414459
loop {
415-
let tunnel = if let Some(d) = gateway_args.tunnel.clone().into() {
416-
dt.start_existing_tunnel(d).await
460+
let tunnel = if let Some(t) =
461+
fulfill_existing_tunnel_args(gateway_args.tunnel.clone(), &gateway_args.name)
462+
{
463+
dt.start_existing_tunnel(t).await
417464
} else {
418465
dt.start_new_launcher_tunnel(gateway_args.name.as_deref(), gateway_args.random_name)
419466
.await

cli/src/tunnels/control_server.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ pub async fn serve(
233233
}
234234
}
235235

236+
#[derive(Clone)]
236237
pub struct ServeStreamParams {
237238
pub log: log::Logger,
238239
pub launcher_paths: LauncherPaths,

cli/src/tunnels/dev_tunnels.rs

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ lazy_static! {
229229
#[derive(Clone, Debug)]
230230
pub struct ExistingTunnel {
231231
/// Name you'd like to assign preexisting tunnel to use to connect to the VS Code Server
232-
pub tunnel_name: String,
232+
pub tunnel_name: Option<String>,
233233

234234
/// Token to authenticate and use preexisting tunnel
235235
pub host_token: String,
@@ -393,7 +393,12 @@ impl DevTunnels {
393393
};
394394

395395
tunnel = self
396-
.sync_tunnel_tags(&persisted.name, tunnel, &HOST_TUNNEL_REQUEST_OPTIONS)
396+
.sync_tunnel_tags(
397+
&self.client,
398+
&persisted.name,
399+
tunnel,
400+
&HOST_TUNNEL_REQUEST_OPTIONS,
401+
)
397402
.await?;
398403

399404
let locator = TunnelLocator::try_from(&tunnel).unwrap();
@@ -532,6 +537,7 @@ impl DevTunnels {
532537
/// other version tags.
533538
async fn sync_tunnel_tags(
534539
&self,
540+
client: &TunnelManagementClient,
535541
name: &str,
536542
tunnel: Tunnel,
537543
options: &TunnelRequestOptions,
@@ -558,7 +564,7 @@ impl DevTunnels {
558564
let result = spanf!(
559565
self.log,
560566
self.log.span("dev-tunnel.protocol-tag-update"),
561-
self.client.update_tunnel(&tunnel_update, options)
567+
client.update_tunnel(&tunnel_update, options)
562568
);
563569

564570
result.map_err(|e| wrap(e, "tunnel tag update failed").into())
@@ -639,6 +645,12 @@ impl DevTunnels {
639645
Ok(())
640646
}
641647

648+
fn get_placeholder_name() -> String {
649+
let mut n = clean_hostname_for_tunnel(&gethostname::gethostname().to_string_lossy());
650+
n.make_ascii_lowercase();
651+
n
652+
}
653+
642654
async fn get_name_for_tunnel(
643655
&mut self,
644656
preferred_name: Option<&str>,
@@ -670,10 +682,7 @@ impl DevTunnels {
670682
use_random_name = true;
671683
}
672684

673-
let mut placeholder_name =
674-
clean_hostname_for_tunnel(&gethostname::gethostname().to_string_lossy());
675-
placeholder_name.make_ascii_lowercase();
676-
685+
let mut placeholder_name = Self::get_placeholder_name();
677686
if !is_name_free(&placeholder_name) {
678687
for i in 2.. {
679688
let fixed_name = format!("{}{}", placeholder_name, i);
@@ -715,7 +724,10 @@ impl DevTunnels {
715724
tunnel: ExistingTunnel,
716725
) -> Result<ActiveTunnel, AnyError> {
717726
let tunnel_details = PersistedTunnel {
718-
name: tunnel.tunnel_name,
727+
name: match tunnel.tunnel_name {
728+
Some(n) => n,
729+
None => Self::get_placeholder_name(),
730+
},
719731
id: tunnel.tunnel_id,
720732
cluster: tunnel.cluster,
721733
};
@@ -725,10 +737,23 @@ impl DevTunnels {
725737
tunnel.host_token.clone(),
726738
));
727739

740+
let client = mgmt.into();
741+
self.sync_tunnel_tags(
742+
&client,
743+
&tunnel_details.name,
744+
Tunnel {
745+
cluster_id: Some(tunnel_details.cluster.clone()),
746+
tunnel_id: Some(tunnel_details.id.clone()),
747+
..Default::default()
748+
},
749+
&HOST_TUNNEL_REQUEST_OPTIONS,
750+
)
751+
.await?;
752+
728753
self.start_tunnel(
729754
tunnel_details.locator(),
730755
&tunnel_details,
731-
mgmt.into(),
756+
client,
732757
StaticAccessTokenProvider::new(tunnel.host_token),
733758
)
734759
.await

0 commit comments

Comments
 (0)